缓存是任何网站的关键部分。对于像 Magento 2 这样的重型平台,缓存变得更加重要。通过使用缓存,商家可以减少页面加载时间,加快页面响应,从而创造更好的用户体验。

Magento 2 中最流行的缓存技术之一是 Varnish。Varnish 作为一个完整的页面缓存机制来减少 Magento 2 服务器的工作量。因此,性能得到改善。

Varnish Cache 是一个开源的 Web 应用程序加速器(HTTP 代理)。Varnish 将数据存储在内存中。这使 Varnish 能够减少期货的响应时间和网络带宽消耗。与 Apache 和 Nginx 等 Web 服务器不同,Varnish 专为与 HTTP 协议一起使用而设计。

如何在 Magento 2 中安装 Varnish

Magento 有自己的缓存机制(读取、写入数据到文件),但效率不够高。
Magento 本身强烈推荐 Varnish 为其用户。要在 Magento 2 上运行 Varnish,您需要安装 Varnish 并将 Varnish 配置文件(VCL 文件)部署到系统中的 Varnish 实现中。

以 root 用户 (sudo su) 运行以下一系列命令。

apt-get install apt-transport-https
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" \
     >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update
apt-get install varnish

如果一切顺利,您应该能够看到 Varnish 版本:

varnishd -V

如何在 Magento 2 中配置 Varnish

第一步:修改webserver监听端口

安装 Varnish 后,您需要配置当前的 Web 服务器。

将您的网络服务器配置为侦听默认端口 (80) 以外的端口 (8080)。

找到您当前的“服务器”指令并将监听端口更改为 8080。

server {
    listen 8080 default_server;
    server_name  your-magento2-store.dev;
    ...
}

第二步:修改default.vcl

备份旧的默认值

cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bak

从 Magento 2 后端下载默认 VCL 配置。

转到商店 > 配置 > 高级 > 系统 > 整页缓存。单击“缓存应用程序”下拉框。从列表中选择“清漆缓存”。

下载与您在系统中安装的清漆等效的清漆文件版本。

Magento 2 中的清漆配置

复制这个你刚刚导出的文件到 /etc/varnish/default.vcl

查找并编辑下面的行backend default

# Default backend definition. Set this to point to your content server.
backend default {
.host = "127.0.0.1";
.port = "8080";
}

在哪里

  • .host – Varnish 后端或源服务器的完全限定主机名或 IP 地址和监听端口;也就是说,提供内容 Varnish 的服务器会加速。通常,这是您的 Web 服务器。
  • .port – Web 服务器的监听端口(本例中为 8080)

第三步:配置Nginx端口80(或443)传给Varnish

打开 Nginx 配置文件(位于 /path/to/nginx/sites-enabled/default)

server {
    listen 80;
    location / {
          proxy_pass http://127.0.0.1:6081/;
          proxy_set_header Host $host;  
    	proxy_set_header X-Forwarded-Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Ssl-Offloaded "1";
		proxy_set_header      X-Forwarded-Port 443;
		proxy_set_header X-Forwarded-Proto https;
		proxy_set_header X-Forwarded-Ssl on;

}

6081 是 varnish 的默认端口。

最后,重启 Varnish & Nginx(或 apache)

service nginx restart
service varnish restart

如何在 Magento 2 中验证清漆

第一步:检查 Varnish 是否监听 6081 端口

netstat -tulpn | grep varnished

第二步:验证var/cache中的内容,var/page_cache文件夹没有重新生成

由于 FPC 配置为从 Varnish 提供内容,因此一旦清除,缓存文件夹(var/cache、var/page_cache)应始终为空。