2

最近、Magento サイトをデプロイし、Varnish を使い始めました。

ただし、各店舗に開閉ボタンを配置するいくつかの PHP ロジックがあり (営業時間中は営業しています)、閉店後に注文を受け取る必要があります。また、ストアが開いたときに顧客に通知するために、「カートに追加」ボタンにロジックがあります。

ここでの問題は、VArnish を使用してページを提供すると、読み込み時間は確かに驚くべきものですが、ストアが開かれた (または閉じられた) ときにページが更新されない (もちろん) ことです。

この場合のベストプラクティスはどれですか?

  • バックエンドからこれらの動的情報を取得するための AJAX ロジックを記述します。
  • ストアがオープンするまでに、このロジックを持つすべてのページに対して Varnish Purge を実行します。
  • TTL を低く設定します (これにより、キャッシュ ヒットが減少します)。

助けてくれてありがとう。

よろしく、マウリシオ。

4

2 に答える 2

0

それでもページ全体をキャッシュしたい場合、唯一の解決策は、Magento を更新して、提供される各ページに特別なHTTP ヘッダー「Expires」を設定することです。このヘッダーにより、Varnish は日付が過ぎたときにキャッシュを失効させることができます。

そのため、店舗が現在閉店している場合やその逆の場合は、次の開店の値を設定する必要があります。

于 2012-11-09T21:32:15.020 に答える
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 に答える