Cache
Note
此页面的内容需要进行重大更新。旧页面包含过时且可能不准确的信息。您仍然可以在 Mautic Developer Documentation archived repository 中访问它。
如果您有兴趣帮助开发此页面和其他新内容的,请考虑加入文档编写工作。
请阅读 Contributing Guidelines 和 Contributing to Mautic’s documentation 以开始您的贡献。
Symfony 广泛使用文件系统缓存。在为 Mautic 开发时,清除缓存是一个常见的操作。默认情况下,Mautic 实例的缓存位于 var/cache/ENV 中,其中 ENV 是当前访问的环境 - dev 或 prod。要重建缓存,请删除缓存目录中相应的 ENV 文件夹,或运行 Symfony 命令 php bin/console cache:clear --env=ENV。如果未将特定环境通过 --env=ENV 参数传递给命令,Mautic 将默认使用 dev 环境。
在 dev 环境中,Mautic 不会缓存翻译、视图和资源。但是,对这些文件的更改需要清除缓存才能使其在 prod 环境中生效。对 Mautic 配置文件、Symfony 配置文件等的更改,无论环境如何,都需要清除缓存。
通常的经验法则是,如果在进行更改后,Mautic 的行为不符合预期,请尝试清除您的缓存。如果您在使用 cache:clear 命令时遇到 “class could not be found” 或 “cannot redeclare class” 错误,请手动删除 var/cache/ENV 文件夹 - 将 ENV 替换为环境,例如 dev 或 prod - 然后运行该命令并/或浏览到站点以重建。
Cache bundle
启用 PSR-6 和 PSR-16 缓存。请参阅 Symfony Cache Component
Namespace versus tag
此模块引入了标签到缓存中。其所有适配器都完全支持标签,这使得命名空间在日常使用中变得过时。
以前,如果您想控制缓存部分并且不想保留所有键的索引以便清除,则需要使用命名空间。
这种方法的缺点是,Mautic 为每个命名空间创建一个新的适配器。
从 Symfony 3.4 开始,缓存使用支持标签的适配器。如果您想清除与您的模块或组件相关的所有记录,您只需要给它们添加标签。
/** @var CacheProvider $cache */
$cache = $this->get('mautic.cache.provider');
/** @var CacheItemInterface $item */
$item = $cache->getItem('test_tagged_Item');
$item->set('yesa!!!');
$item->tag(['firstTag', 'secondTag']);
$item->expiresAfter(20000);
您现在只需要清除所有带有标签的项目:
$cache->invalidateTags(['firstTag']);
Pools clearing
删除缓存项
Cache Pools 包含用于删除缓存项的方法,可以删除单个、部分或全部缓存项。最常用的方法是 PsrCacheCacheItemPoolInterface::deleteItem,它根据给定的键删除缓存项。
$isDeleted = $cache->deleteItem('user_'.$userId);
使用 PsrCacheCacheItemPoolInterface::deleteItems 方法可以同时删除多个缓存项 - 它仅在所有项都已成功删除时返回 true,即使某些或全部项不存在。
配置
插件默认配置为使用文件系统缓存。
以下是默认设置:
'cache_adapter' => 'mautic.cache.adapter.filesystem',
'cache_prefix' => 'app',
'cache_lifetime' => 86400
这些可以在 local.php 文件中进行覆盖,例如:
'cache_adapter' => 'mautic.cache.adapter.redis',
'cache_prefix' => 'app_cache',
'cache_lifetime' => 86400,
提供的适配器
mautic.cache.adapter.filesystem
mautic.cache.adapter.memcached
'cache_adapter_memcached' => [
'servers' => ['memcached://localhost'],
'options' => [
'compression' => true,
'libketama_compatible' => true,
'serializer' => 'igbinary',
],
],
mautic.cache.adapter.redis
在 local.php 文件中配置 Redis:
'cache_adapter_redis' => [
'dsn' => 'redis://localhost:6379/0',
'options' => [
'lazy' => false,
'persistent' => 0,
'persistent_id' => null,
'timeout' => 30,
'read_timeout' => 0,
'retry_interval' => 0
],
],
要使用其他适配器,只需将其设置为服务即可。
清除缓存
cache:clear 命令用于清除 Mautic 的缓存。 使用以下命令:
bin/console mautic:cache:clear