我想用APCU后端配置TagAwareCache。 结果应该注入到服务中。
所以我有这个config.yml:
cache:
pools:
data_evaluator_cache_items_cache: # apcu backend
adapter: cache.adapter.apcu
public: true
data_evaluator_cache:
class: Symfony\Component\Cache\Adapter\TagAwareAdapter
arguments:
$itemsPool: "@data_evaluator_cache_items_cache"
public: true
AppBundle\Service\DataEvaluator:
alias: data_evaluator
arguments:
$cache: "@data_evaluator_cache"
data_evaluator:
class: AppBundle\Service\DataEvaluator
public: true
arguments:
$cache: "@data_evaluator_cache"
服务如下:
class DataEvaluator {
public function __construct(Logger $l, AdapterInterface $cache) {
}
}
根据我的测试,注入的$cache
确实是TagAwareAdapter
,所以很好。
但是,我怀疑提供给TagAwareCache
的项目内部缓存是apcu缓存。这些东西很好,这些是我的标签。
这是Web工具栏的两个屏幕截图。首先,我看到data_evaluator_cache_items_cache
用于我的缓存项/有效负载。
下一个屏幕截图让我感到紧张:cache.app
用于标记! cache.app
解析为FilesystemCache
。
顺便说一句:对物品和标签使用APCU是个好主意吗?我不需要分布式缓存。我听说自PHP7 / opcache以来,现代的PhpFilesCache是一件好事。有人有实践经验吗?
答案 0 :(得分:0)
我解决了: 不幸的是symfony docs中有一个小错误。 这有效:
cache:
pools:
data_evaluator_cache_items_cache:
adapter: cache.adapter.apcu
public: true
data_evaluator_cache_tags_cache:
adapter: cache.adapter.apcu
public: true
data_evaluator_cache:
class: Symfony\Component\Cache\Adapter\TagAwareAdapter
arguments:
$itemsPool: "@data_evaluator_cache_items_cache"
$tagsPool: "@data_evaluator_cache_tags_cache"
public: true