【问题标题】:Symfony Validator not using cacheSymfony Validator 不使用缓存
【发布时间】: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 选项是否有效?我可以把任何废话放在那里,它甚至不会抛出错误

【问题讨论】:

    标签: symfony validation caching


    【解决方案1】:

    我看不到你的完整配置,但必须在 '.env' 文件中设置 REDIS_CACHE_URL 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 2018-11-17
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-10-05
      相关资源
      最近更新 更多