Symfony Validator 不使用缓存
Posted
技术标签:
【中文标题】Symfony Validator 不使用缓存【英文标题】:Symfony Validator not using cache 【发布时间】:2021-08-07 20:53:54 【问题描述】:我有 symfony 5.2.3 项目,其中包含一堆缓慢的验证单元测试。我想要缓存验证约束映射。
按照文档https://symfony.com/doc/current/reference/configuration/framework.html#reference-validation-cache 我的validator.yaml 如下(我已经用cli 转储了它,它实际上是这样设置的):
framework:
validation:
enabled: true
email_validation_mode: html5
cache: cache.default_redis_provider
和 cache.yaml:
framework:
cache:
app: cache.adapter.filesystem
default_redis_provider: '%env(REDIS_CACHE_URL)%'
但是我的 redis 中没有写入缓存。我深入研究并发现 Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory 正在用于此目的。所以我在那里进行了一些调试,发现它正在从 DI 获取 $cache = null。我手动覆盖它
$cache = new RedisAdapter(new Client('redis://redis:6379?database=1'));
而且我的测试运行速度很快,并且缓存被写入和读取。
发生了什么事?这个 validation.cache 选项是否有效?我可以把任何废话放在那里,它甚至不会抛出错误
【问题讨论】:
【参考方案1】:我看不到你的完整配置,但必须在 '.env' 文件中设置 REDIS_CACHE_URL 的值。
【讨论】:
以上是关于Symfony Validator 不使用缓存的主要内容,如果未能解决你的问题,请参考以下文章