我认为这解释了我们如何避免在 magento 中使用清漆
如果您使用 aoe_static 模块和我为 varnish 3 定制的 vcl,它会清除缓存页面响应中的 cookie。它应该在 vcl fetch 中执行此操作。然后可以从加载动态内容的较小的 ajax 响应中设置 cookie。这会维护您的会话、购物车等。此 ajax 响应可以在 vcl 恢复中“管道”化。
我没有遇到任何问题,但没有在生产站点上尝试过。
动态块必须通过布局 xml 替换为占位符。如果您喜欢这些替代品,则可能是清漆边缘包含或自定义 ajax 实现。
当从 aoe_static 加载动态内容(或者你喜欢的任何类型的 ajax 方法)时,记住你仍然可以使用 magentos 布局系统是很好的,例如,为你的 ajax 调用创建一个句柄,其中包含要渲染的嵌套块。
如果您使用 aoe_static 模块,您会注意到调用了 loadLayout,但请记住传递给该 loadLayout 的句柄。它与您所在页面的布局请求不同,但它确实为您提供了默认句柄。
另一个问题是库存水平。当产品不再有足够的库存添加到购物车时,它仍会出现在产品列表中,并作为可配置和分组产品的选项。
可能您可以使用观察者 - cataloginventory_stock_item_save_after - 检查库存水平(我没有检查过这个)。然后可以根据产品的 url 清除缓存。获取产品将出现的类别 URL 并同时清除这些 URL 非常容易。
如果您想从观察者那里看到一个简单的实现,phoenix 模块有方法可以执行这些清除操作。
但是如何处理分层的导航 url 更加棘手。您需要预先存储应用程序使用基本类别列表 url 作为键提供的查询字符串参数,然后在观察者中读取并清除这些 url。这种查询字符串参数的存储在发送之前使用响应非常容易,使用正则表达式检查请求对象并使用逗号分隔记录查询字符串。
我认为当前的模块都没有处理分层导航的库存水平是错误的?
我认为开源社区需要一个好的完成的清漆模块,因为所有其他模块都缺乏。就我个人而言,我计划仅将付费整页缓存与负载平衡服务器一起使用,并且可能使用清漆来捕获图像和 css 请求。除非有人想联合起来进行适当的 varnish 实施,或者如果可以将工作添加到更好地处理所有这些问题的开源实施中,我很乐意为您的网站提供帮助。
结帐此问题以获取有关您将面临此问题的问题的更多详细信息-magento 开源整页缓存