/ / Magento + Varnish - Logik für Geschäfte, die zu bestimmten Zeiten geöffnet und geschlossen werden - PHP, Ajax, Magento, Caching, Lack

Magento + Varnish - Logik für Geschäfte, die sich zu bestimmten Zeiten öffnen und schließen - php, ajax, magento, caching, lack

Ich habe kürzlich meine Magento-Site bereitgestellt und damit begonnen, Varnish darauf zu verwenden.

Wir haben jedoch einige PHP-Logik, die eineÖffnen- und Schließen-Button in jedem der Geschäfte (sie sind zu Arbeitszeiten geöffnet), und nachdem es geschlossen ist, sollte es irgendwelche Bestellungen erhalten. Wir haben auch Logos auf den Schaltflächen "In den Warenkorb", um den Kunden zu informieren, wenn das Geschäft eröffnet wird.

Das Problem hierbei ist, dass, wenn ich die Seiten mit VArnish bediene, die Ladezeit in der Tat fantastisch ist. Wenn der Laden jedoch geöffnet (oder geschlossen) wird, wird die Seite (natürlich) nicht aktualisiert.

Was wäre in diesem Fall eine bewährte Methode?

  • Schreiben Sie eine AJAX-Logik, um diese dynamischen Informationen vom Backend abzurufen
  • Führen Sie die Lackbereinigung für alle Seiten mit dieser Logik aus, bis der Store geöffnet wird
  • Stellen Sie eine niedrige TTL ein (dies reduziert den Cache-Hit).

Vielen Dank für die Hilfe.

Freundliche Grüße, Mauricio.

Antworten:

0 für die Antwort № 1

Was ist mit dem Speichern der Öffnungs- und Schließzeiten vonjeder Shop in der HTML und verwenden Sie Javascript, um den aktuellen Status für den Benutzer zu zeigen? Auf diese Weise können Sie den Cache verwenden und haben immer noch die dynamischen Teile, die Sie erwähnt haben.

Beispiel (wird nicht funktionieren, meistens Pseudocode):

<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>

0 für die Antwort № 2

Wenn Sie trotzdem die ganze Seite zwischenspeichern möchten, besteht die einzige Lösung darin, Ihr Magento so zu aktualisieren, dass ein Spezial festgelegt wird HTTP-Header "Expires" für jede gelieferte Seite. Mit diesem Header kann Varnish den Cache verfallen lassen, wenn das Datum abgelaufen ist.

Sie müssen also den Wert der nächsten Eröffnung einstellen, wenn der Shop gerade geschlossen ist, und umgekehrt.