我一直在研究magento中的整页缓存,这对于这个以及动态块的发送方式没有意义。
对于包含动态数据的块,仍然需要引导应用程序,并且需要构建布局以生成块,例如最近查看的篮子内容等
服务器现在正在做更多工作。
这是否正确,如果是这样,如何解决这个问题
答案 0 :(得分:3)
我的2美分:
这取决于你如何做你的FPC ......
如果您正在使用其他缓存前端/代理,如nginx或varnish或[在此处插入一个],那么它真的会减少负载:
另外,根据您的需要,您可以将信息存储在页面加载后由js使用的cookie中,而不是第二次请求,这又取决于动态信息的动态和敏感程度。
所以请求流程是:
是的,你支付额外的往返费用,但你确实为客户立即加载了东西,而正在处理ajax请求时,浏览器可能会从服务器中提取images / css / other js,这很不错。
老实说,我不知道企业版是如何做到的(只是没有读过代码),但在大多数(并非所有)事情都被处理之前,有一个部分可以附加缓存处理器。在该环境中,应用程序已经被引导并且一些配置被加载,因此您实际上可以从缓存中提取FPC,然后用特定信息替换它们的占位符,并在一个请求中发送它。
再次请求流程:
请求 - > Magento(在路由之前等) - >打孔 - >响应。
所以在动态内容出现之前,事情不会开始加载,但是你没有额外的往返行程。
Conculsion:
至于哪一个是最好的,这取决于您的需求和设置。这些只是我见过的两种不同的设置,在我的测试中,任何一种方法都可以完全没有FPC。
HTH
答案 1 :(得分:1)
不确定我是否理解你的问题,但Magento和你的服务器将会做更少的工作,因为它只会生成并提供你用XML定义的打孔动态块。页面的其余部分是由varnish提供的静态html,它甚至不会将这些请求传递给magento。
从Fabrizio Branca的博客中查看此图表:
答案 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