我正在努力寻找任何良好的工作示例,说明需要进行哪些修改以允许Varnish缓存Magento网站。

理想情况下,我想要一系列任务列表,例如可以禁用/启用的内容以及在哪里寻找它们。拥有这些更改旨在使用的清漆配置也是一件好事。

Magento Performance Guide对Varnish进行了很多讨论,因此我知道它已经完成了,但是实际上并没有解释如何使其正常工作。

有帮助吗?

解决方案

他们有一个正式的模块 这里. 。它包括您需要的一切(Varnish Config,模块,...)

其他提示

清漆适合您吗?

Varnish并不是Magento性能的全部和最终。从机器人和窗口存储店中抵消负载非常好 - 但它不应该是您更快地制作商店的第一个呼叫港口。

实际上,实施清漆应该是 最后的 商店的性能修改。只有一旦您看到页面加载时间Magento就能在没有它的情况下交付(例如,<600ms的页面加载时间)。

您的商店仍然需要快速

由于Varnish仍然需要至少一个页面加载才能加重缓存,这意味着您的未接触性能仍然需要非常好。绝大多数独特的URL(分层导航命中,搜索查询等)绝不会真正从清漆中提供。

一个) 您的TTL太高了,以至于4天前的搜索查询今天仍然有效
b) 网站上的脚步非常巨大,以至于在很短的时间内填充了URL

您还必须考虑 并非每个商店都借给清漆. 。任何鼓励用户创建个人会话(例如,登录,添加到车等)的任何网站在他们的客户旅程中将意味着清漆最终将是多余的。

例如,私人购物网站鼓励用户从现场登录用户,但是,这样做,这意味着Varnish从来没有真正具有可缓存的非唯一内容。因此,您的命中率将非常低,并且使用清漆根本不会受益。

新鲜内容或更高的命中率

Varnish Hit Rate
图像提供 magestack.com

有效地使用清漆是关于在陈旧内容和网站上的访问者数量之间取得平衡。

如果您有一个繁忙的网站 - 赔率是您可以摆脱较低的TTL,并且仍然具有很高的清漆率 - 并且也继续具有低TTL的速度 - 因此,更新鲜的内容。因此,您的股票/价格变化很快就会反映出来,并从步行量的数量中不断启动缓存。

如果您有一个低人流的网站 - 那么您将不得不做出妥协。增加TTL以确保较高的命中率或具有最新内容。你不能完全拥有。是的,您可以连续运行爬网/蜘蛛工具 - 但是,这将消耗的资源以及可以爬行的庞大的数量或URL(通常在数万美元中 小的 商店)意味着它根本无效。因此,通常,较小的商店会从中受益更多 好的 FPC扩展程序并具有高度优化的服务器配置。

但是,即使用户登录,我也可以使用清漆,而cache-per-user或esis又如何呢?

ESIS

ESI是能够将内容保存在缓存中的绝佳实用性,并且仍然能够在页面上具有动态块。但是要有效地使用,您需要将回调的量最小化至最低限度。有一个小头 模块 您可以用作此过程的基础 - 只需确保您收紧它的安全孔,默认情况下它非常不安全 - 对您可以/不能加载的布局处理没有任何限制

每次加载Magento Bootstrap时,它都会受到200ms的性能罚款 - 甚至在加载收集/呈现块等之前使用Varnish+ESI进行动态内容的页面加载时间较慢,而不是绕过清漆并将请求直接传递给Magento本身。

因此,要真正有效地使用ESI,您必须能够将多个请求组合在一个请求中。

例如,类别查看页面列出20种产品需要显示准确的库存水平。因此,您将ESI用于页面上的每个块。那将是20x ESI股票请求。虽然库存请求非常轻巧,但同时运行20倍会破坏性能。因此,您可以提供20种产品的整个块/收集,只需获得1倍的请求即可。但是,加载和渲染集合可能无论如何都是页面上最慢的元素 - 因此,您并没有获得太多收益。

使用ESI有效地需要适当的计划和执行,否则您的站点比完全不使用清漆要慢。

cache-per用户

然后还有使用特定于用户的缓存的选择。除非您有一个非常低的交通站点,否则这是一个坏主意。您的命中率将非常低 - 因为访客的赔率与他们已经去过的相同页面相同。对于每个客户,该6KB页面将在您的清漆存储箱中占据越来越多的空间。

例如,如果您已将1GB分配给清漆。在一个典型的网站上,用户每次访问查看8页,平均6页将是唯一的。因此,每1MB的存储空间是28个访问者。然后,在您的图像,CSS和JS中进行因素 - 这些(值得庆幸的是)将很普遍,但仍然可能会占据您可用的7-800MB。这使您剩下200MB的存储空间,足以容纳5,600个唯一访问者。

好吧,我不在乎,我只想要清漆

好的,那么您需要做以下操作:

  1. 安装一个SSL终结器以坐在清漆之前(例如螺柱/磅/nginx)
  2. 在服务器上安装清漆
  3. 确保您配置 X-Forwarded-For 正确
  4. 安装 清漆模块 在您的商店
  5. 设置您的清漆VCL以排除第三方扩展

由于前3点超出了这个答案的范围,因此我将其留给自己处理。第4点是儿童的比赛,有第5点 - 继续阅读。

关于清漆实施的最重要的事情是确保您 绝不 不能缓存的缓存内容。

例如。

  • 付款网关回调
  • 购物车概述
  • 客户我的帐户概述
  • 结帐(以及各自的AJAX调用)

等等

对于核心洋红色URL,有一个相当标准的URI列表,您可以在清漆中逃脱:

admin|checkout|customer|catalog/product_compare|wishlist|paypal

但是,您还需要考虑您正在运行的具有自定义路由,路由器和名称空间的任何自定义/第三方扩展程序。不幸的是,没有一种简单的方法可以知道这些扩展程序可以和不能缓存的URL。因此,您需要逐案评估每个人。

通常,每当我们配置清漆时,我们将首先识别它们可能占据并从那里走的相应路由,路由器和名称空间。我们通过SSH来做到这一点:

grep -Eiroh "<frontName>.*</frontName>" community | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" community | grep "<from>"
grep -A5 -ir "<routers>" community 
grep -Eiroh "<frontName>.*</frontName>" local | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" local | grep "<from>"
grep -A5 -ir "<routers>" local 

这不会为您提供明确的URL列表 - 但几乎可以肯定会给您一个入门者。

我们不能强调永远不要缓存不应该缓存的内容是多么重要。 结果可能是灾难性的。

总之

与任何其他Magento服务器性能优化一样,正确实施和调整可以真正产生好处。但是,仅仅在没有正确配置的情况下放入软件中,不仅会使您的商店没有更快,而且可能更慢,不安全和可靠。

许可以下: CC-BY-SA归因
scroll top