缓存简介
Magento 2使用zend_cache与缓存存储交互。然而,Magento 2也有Magento\Cache库实现的具体缓存Magento。这些主题讨论如何配置缓存和缓存类型。
默认情况下,文件系统缓存启用;位于 <Magento 2 安装目录>/var
.
更改缓存配置,编辑<Magento 2 安装目录>/app/etc/env.php
.
缓存配置是与下列类似的关联数组:
'cache_types' =>
array (
'config' => 1,
'layout' => 1,
'block_html' => 1,
'collections' => 1,
'db_ddl' => 1,
'eav' => 1,
'full_page' => 1,
'translate' => 1,
'config_integration' => 1,
'config_webservice' => 1,
'config_integration_api' => 1,
),
);
上面列出了所有缓存类型,并显示它们都已启用。
副缓存前端缓存类型
Magento 2 缓存概述
Magento 2允许您配置文件系统缓存替代默认缓存。本指南讨论了一些替代方案,即,
-
- Database
- Redis
-
设置 Vanish无需修改Magento的配置。
Magento 2使用以下缓存术语:
- Frontend: Magento\Framework\Cache\Frontend.
- Cache types: 可以设置一个类型Magento 2也可以创建你自己的.
- Backend: 指定详细信息 cache storage, 实施 Magento\Framework\Cache\Backend
以下配置缓存选项 :
- 修改默认前端缓存,只需要修改
<Magento 2 安装目录>/app/etc/di.xml
- 配置您的自定义前端缓存,只需修改
<Magento 2 安装目录>/app/etc/env.php
因为它覆盖了等效配置di.xml
Varnish 不需要更改Magento 2的配置.
步骤1:定义一个前端缓存
Magento 2 的默认前端缓存你可以使用任何缓存类型
使用 default
缓存类型, 不需要修改env.php
修改 di.xml
. 参见引用的主题低级别缓存选项
您必须指定一个自定义缓存前端要么 app/etc/env.php
或 app/etc/di.xml
.
下面的示例演示如何在 env.php
(重写 di.xml
):
'cache' => [
'frontend' => [
'<unique frontend id>' => [
<cache options>
],
],
'type' => [
<cache type 1> => [
'frontend' => '<unique frontend id>'
],
],
'type' => [
<cache type 2> => [
'frontend' => '<unique frontend id>'
],
],
],
第二步:配置缓存
您可以指定前端和后端env.php或di.xml缓存配置选项。这个任务是可选的
env.php
例子:
'frontend' => <frontend_type>,
'frontend_options' => [
<frontend_option> => <frontend_option_value>,
...
],
'backend' => <backend_type>,
'backend_options' => [
<backend_option> => <backend_option_value>,
...
],
下一步
低级别缓存选项
Magento 2 使用一个低级别的缓存,前端和后端提供访问缓存存储。
前端低级别缓存
Magento 2 继承 Zend_Cache_Core 通过 Magento\Framework\Cache\Core 来实现前端低级别缓存.
后端低级别缓存
- Redis
- Database
Vanish不需要设置低级缓存
数据库缓存
数据库缓存概述
本主题讨论如何使用Magento 2数据库缓存. cache
和 cache_tag
,缓存的对象存储在Magento 2数据库表。不存储 var/cache
或 var/page_cache
.
- 使用默认的前端缓存, 只需要修改
di.xml
. - 使用一个自定义的前端缓存, 只需要修改
env.php
..
数据库缓存 使用 default
前端缓存
为了使数据库前端缓存使用默认,你必须修改 <Magento 2 安装目录>/app/etc/di.xml
。
修改 di.xml
:
- 登录到magento2服务器,切换到 Magento 2文件系统所有者.
-
输入下列命令以复制
di.xml
:cd <Magento 2 安装目录>/app/etc cp di.xml di.xml.bak
-
打开
di.xml
在文本编辑器中找到下面的块:<type name="Magento\Framework\App\Cache\Frontend\Pool"> <arguments> <argument name="frontendSettings" xsi:type="array"> <item name="page_cache" xsi:type="array"> <item name="backend_options" xsi:type="array"> <item name="cache_dir" xsi:type="string">page_cache</item> </item> </item> </argument> </arguments> </type> <type name="Magento\Framework\App\Cache\Type\FrontendPool"> <arguments> <argument name="typeFrontendMap" xsi:type="array"> <item name="full_page" xsi:type="string">page_cache</item> </argument> </arguments> </type>
-
用以下替换整个块:
<type name="Magento\Framework\App\Cache\Frontend\Pool"> <arguments> <argument name="frontendSettings" xsi:type="array"> <item name="page_cache" xsi:type="array"> <item name="backend" xsi:type="string">database</item> </item> <item name="<your cache id>" xsi:type="array"> <item name="backend" xsi:type="string">database</item> </item> </argument> </arguments> </type> <type name="Magento\Framework\App\Cache\Type\FrontendPool"> <arguments> <argument name="typeFrontendMap" xsi:type="array"> <item name="backend" xsi:type="string">database</item> </argument> </arguments> </type>
-
保存您的更改并退出文本编辑器di.xml。
- 继续验证数据库的缓存工作.
数据库缓存使用自定义前端缓存
本节介绍如何使用自定义缓存前端设置数据库缓存。
由于一个已知的问题,自定义缓存前端仍有一些对象被缓存到文件系统。
为了使数据库缓存使用自定义缓存前端,你必须修改 <Magento 2 安装目录>/app/etc/env.php
:
- 登录到magento 2服务器,转换到 Magento 2文件系统所有者.
-
输入下列命令以复制
env.php
:cd <Magento 2 安装目录>/app/etc cp env.php env.php.bak
-
打开
env.php
在文本编辑器中任何地方添加如下'cache_types' =>
:'cache' => [ 'frontend' => [ '<unique frontend id>' => [ <cache options> ], ], 'type' => [ <cache type 1> => [ 'frontend' => '<unique frontend id>' ], ], 'type' => [ <cache type 2> => [ 'frontend' => '<unique frontend id>' ], ], ],
例子: 配置实例
- 保存
env.php
的更改,并关闭编辑器. - 继续下一节 .
验证数据库的缓存工作
验证数据库缓存工作,明确当前的缓存目录,在Web浏览器的任何可缓存的页面,并验证数据写入数据库而不是文件系统。
使用步骤:
- 登录magento 2服务器,切换到Magento 2文件系统所有者.
-
清除当前缓存目录 :
rm -rf <Magento 2 安装目录>/var/cache/* <Magento 2 安装目录>/var/page_cache/* <Magento 2 安装目录>/var/di/* <Magento 2 安装目录>/var/generation/*
-
在Web浏览器中,去任何可缓存的页面.
如果显示异常, 验证
di.xml
语法,然后再试一次. (要在浏览器查看到异常显示,你必须 使用开发者模式.) -
输入下面的命令:
ls <Magento 2 安装目录>/var/cache/* ls <Magento 2 安装目录>/var/page_cache/*
- 请验证两个目录是否为空;如果没有,请再次编辑
di.xml
纠正任何问题。 -
使用一个数据库工具,例如 phpMyAdmin查看
cache
和cache_tag
表.显示结果如下图:
cache
数据表.cache_tag
数据表.
配置实例
本节包含配置数据库缓存示例代码片段。
前端默认缓存di.xml
示例
di.xml
代码片段:
<type name="Magento\Framework\App\Cache\Frontend\Pool">
<arguments>
<argument name="frontendSettings" xsi:type="array">
<item name="page_cache" xsi:type="array">
<item name="backend" xsi:type="string">database</item>
</item>
<item name="default" xsi:type="array">
<item name="backend" xsi:type="string">database</item>
</item>
</argument>
</arguments>
</type>
<type name="Magento\Framework\App\Cache\Type\FrontendPool">
<arguments>
<argument name="typeFrontendMap" xsi:type="array">
<item name="backend" xsi:type="string">database</item>
</argument>
</arguments>
</type>
一个自定义的前端缓存env.php
示例
env.php
代码片段,所有的缓存类型与自定义前端缓存命名 magento_cache
:
'cache' => [
'frontend' => [
'magento_cache' => [
'backend' => 'database'
],
],
'type' => [
'config' => [
'frontend' => 'magento_cache'
],
'layout' => [
'frontend' => 'magento_cache'
],
'block_html' => [
'frontend' => 'magento_cache'
],
'view_files_fallback' => [
'frontend' => 'magento_cache'
],
'view_files_preprocessing' => [
'frontend' => 'magento_cache'
],
'collections' => [
'frontend' => 'magento_cache'
],
'db_ddl' => [
'frontend' => 'magento_cache'
],
'eav' => [
'frontend' => 'magento_cache'
],
'full_page' => [
'frontend' => 'magento_cache'
],
'translate' => [
'frontend' => 'magento_cache'
],
'config_integration' => [
'frontend' => 'magento_cache'
],
'config_integration_api' => [
'frontend' => 'magento_cache'
],
'config_webservice' => [
'frontend' => 'magento_cache'
],
],
],