2

我最近部署了我的 Magento 站点并开始在其上使用 Varnish。

然而,我们确实有一些 PHP 逻辑,在每个商店上放置一个打开和关闭按钮(它们在工作时间开放),并且在它关闭后它应该收到任何订单。此外,我们在“添加到购物车”按钮上有逻辑,以便在商店开业时通知客户。

这里的问题是,如果我使用 VArnish 为页面提供服务,加载时间确实很棒,但是当商店打开(或关闭)时,页面不会刷新(当然)。

在这种情况下,哪个是最佳实践?

  • 编写一个 AJAX 逻辑,从后端获取这些动态信息
  • 在商店打开时,对所有具有此逻辑的页面运行清漆清除
  • 设置较低的 TTL(这将减少 Cache Hit)。

非常感谢你的帮助。

最好的问候,毛里西奥。

4

2 回答 2

0

将每个商店的打开和关闭时间存储在 html 中并使用 javascript 向用户显示当前状态如何?这样您就可以使用缓存并且仍然拥有您提到的动态部分。

示例(不起作用,主要是伪代码):

<p id="open" data-open-start="8:00 UTC" data-open-end="16:00 UTC">We are open between 8:00 UTC and 16:00 UTC</p>

<script>
  // assuming JQuery
  var open_start_time = [get data-open-start-time and parse it]
  var open_end_time = [get data-open-end-time and parse it]
  // some time zone conversions...
  if (currentTime >= open_start_time && currentTime <= open_end_time) {
    $('p#open').text('we are open!');
  } else {
    $('p#open').text('sorry, we are closed!');
  }
</script>
于 2012-11-09T12:58:08.983 回答
0

如果您仍想缓存整个页面,唯一的解决方案是更新您的 Magento为每个提供的页面设置一个特殊的HTTP 标头“过期” 。此标头允许 Varnish 在日期结束时过期缓存。

因此,如果商店当前已关闭,则需要设置下一次开张的值,反之亦然。

于 2012-11-09T21:32:15.020 回答