/ / Magento + Varnish - Logique pour les magasins qui s'ouvrent et se ferment à des heures spécifiques - php, ajax, magento, mise en cache, vernis

Magento + Varnish - Logique pour les magasins qui s'ouvrent et se ferment à des heures spécifiques - php, ajax, magento, mise en cache, vernis

J'ai récemment déployé mon site Magento et commencé à utiliser Varnish sur celui-ci.

Cependant, nous avons une logique PHP qui place unouvrir et fermer le bouton sur chacun des magasins (ils sont ouverts sur les heures de travail), et après sa fermeture, il devrait recevoir toutes les commandes. Nous avons également des logiques sur les boutons "Ajouter au panier", pour informer le client lorsque le magasin est ouvert.

Le problème ici est que si je sers les pages avec VArnish, le temps de chargement est vraiment merveilleux, mais lorsque le magasin est ouvert (ou fermé), la page n'est pas actualisée (bien sûr).

Quelle serait la meilleure pratique dans ce cas?

  • Écrivez une logique AJAX pour obtenir ces informations dynamiques à partir du backend
  • Exécutez Varnish Purge pour toutes les pages comportant cette logique au moment de l'ouverture du magasin
  • Avoir un TTL bas défini (cela réduira le taux d’accès au cache).

Merci beaucoup pour l'aide.

Meilleures salutations, Mauricio.

Réponses:

0 pour la réponse № 1

Qu'en est-il de stocker les heures d'ouverture et de fermeture dechaque magasin dans le html et utiliser javascript pour montrer le statut actuel à l'utilisateur? De cette façon, vous pouvez utiliser le cache tout en conservant les parties dynamiques que vous avez mentionnées.

Exemple (ne fonctionnera pas, principalement du pseudo-code):

<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 pour la réponse № 2

Si vous souhaitez toujours mettre en cache toute la page, la seule solution consiste à mettre à jour votre Magento afin de définir un En-tête HTTP "Expires" pour chaque page servie. Cet en-tête permet à Varnish d’expirer le cache lorsque la date est terminée.

Vous devrez donc définir la valeur de la prochaine ouverture si le magasin est actuellement fermé et inversement.