Magento整页缓存与清漆

时间:2012-09-08 16:10:18

标签: magento caching varnish

我一直在研究magento中的整页缓存,这对于这个以及动态块的发送方式没有意义。

对于包含动态数据的块,仍然需要引导应用程序,并且需要构建布局以生成块,例如最近查看的篮子内容等

服务器现在正在做更多工作。

这是否正确,如果是这样,如何解决这个问题

3 个答案:

答案 0 :(得分:3)

我的2美分:

这取决于你如何做你的FPC ......

“代理缓存”

如果您正在使用其他缓存前端/代理,如nginx或varnish或[在此处插入一个],那么它真的会减少负载:

  1. 一个请求获取缓存后的页面的“框架” 甚至没有触摸php或magento或mysql,只是提供静态 文件。因此,一旦它被缓存,它不需要引导应用程序或 加载并解析任何layout / config / system xml。
  2. 第二个请求是获取动态内容并且更轻松。是的,它 仍然必须使用配置/布局/系统xml,但应该 已经被缓存,它不必创建/处理那么多 阻止取决于动态需求。
  3. 另外,根据您的需要,您可以将信息存储在页面加载后由js使用的cookie中,而不是第二次请求,这又取决于动态信息的动态和敏感程度。

    所以请求流程是:

    1. 请求 - > nginx / varnish / etc(超快) - >回应......
    2. ajax request - > Magento用于动态内容(如果做整页则更轻松处理) - >回应 - > js替换元素。
    3. 是的,你支付额外的往返费用,但你确实为客户立即加载了东西,而正在处理ajax请求时,浏览器可能会从服务器中提取images / css / other js,这很不错。

      “Magento FPC”

      老实说,我不知道企业版是如何做到的(只是没有读过代码),但在大多数(并非所有)事情都被处理之前,有一个部分可以附加缓存处理器。在该环境中,应用程序已经被引导并且一些配置被加载,因此您实际上可以从缓存中提取FPC,然后用特定信息替换它们的占位符,并在一个请求中发送它。

      再次请求流程:

      请求 - > Magento(在路由之前等) - >打孔 - >响应。

      所以在动态内容出现之前,事情不会开始加载,但是你没有额外的往返行程。


      Conculsion:

      至于哪一个是最好的,这取决于您的需求和设置。这些只是我见过的两种不同的设置,在我的测试中,任何一种方法都可以完全没有FPC。

      HTH

答案 1 :(得分:1)

不确定我是否理解你的问题,但Magento和你的服务器将会做更少的工作,因为它只会生成并提供你用XML定义的打孔动态块。页面的其余部分是由varnish提供的静态html,它甚至不会将这些请求传递给magento。

从Fabrizio Branca的博客中查看此图表:

enter image description here

答案 2 :(得分:0)

是的,第二个请求命中服务器。 它还加载了第30行的布局。这意味着将加载某些句柄 - default,customer_logged_out(或in)和调用控制器(我错过了什么?)。在此博客http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html中,建议您将占位符添加到默认句柄中。 unsetChild方法允许您仍然在调用控制器中按名称加载块。一些阿兰风暴博客中描述了这个的原因,并且(我认为)他处理了一些关于移除而不是未设置块的问题的模块。此模块并未真正处理缓存失效。也许你应该查看这篇文章magento open source full page cache