symfony - Symfony Validator 不使用缓存
问题描述
我有 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
和缓存.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 选项是否有效?我可以把任何废话放在那里,它甚至不会抛出错误
解决方案
我看不到您的完整配置,但必须在“.env”文件中设置 REDIS_CACHE_URL 的值。
推荐阅读
- javascript - 使用 Intersection Observer API 的延迟加载图像导致 SEO 索引失败
- azure - 如何在不停机的情况下使用 terraform 升级 AKS 集群
- tshark - 过滤 .csv 的 tshark 输出。防止缺少字段的错误
- laravel - 当另一个 api 服务器也在 localhost 中运行时,从 NextJs 应用程序的 gatServerProps 获取数据
- javascript - 过滤对象以仅包含对象数组中存在的键
- sql - 除了分层数据之外,递归 CTE 还用于什么?
- intersystems-iris - 流中缺少 GUID 引用
- calculated-columns - 如何将非确定性计算列转换为确定性列以进行索引
- c# - Azure.Storage.Blobs 根据创建时间和文件类型列出所有 Blob 的方法 (PDF)
- sql - 从 3 个表中获取值,其中两个表是自联接的