Je veux qu'un magasin choisisse intelligemment une devise par défaut en fonction de l'IP du client utilisant GeoIP lors de sa première visite (sans cookie de devise présélectionné). Le magasin est derrière Varnish utilisant l'excellente extension Turpentine de Nexcess.
L'extension gère correctement la devise tant que le cookie de devise Magento standard est défini sur une demande donnée.
À ce stade, mes réflexions sont les suivantes:
- Ajoutez VCL dans la configuration Varnish pour effectuer la recherche GeoIP (en C) et définissez le cookie sur la demande entrante, si elle n'est pas déjà définie, bien sûr.
- Ajoutez un bloc mis en cache par utilisateur qui effectue la recherche et définit le cookie (bien que cela ne s'applique pas lors du premier chargement de page)
Suis-je en train de manquer une technique évidente - peut-être un JS côté client vers un chemin d'URL sans cache de vernis qui fait la détermination?
Quelqu'un connaît-il la meilleure façon de procéder?
Je ne l'ai pas fait auparavant, mais c'est ce qui me vient à l'esprit:
Utilisez libvmod-geoip pour déterminer le code du pays (vous n'avez pas utilisé cette extension de vernis, soyez prudent ;-)) https://github.com/lampeh/libvmod-geoip
Ensuite, vous étendez la fonction de hachage via
sub vcl_hash()
pour ajouter le code du pays aux clés de cache. Cela vous permet de tout mettre en cache en fonction du code pays.Vous ajoutez également le code du pays comme en-tête, comme
set req.http.X-GeoIP = geoip.client_country_code();
sorte que le serveur magento soit en mesure de déterminer le bon pays et de livrer les bonnes choses.Ce n'est qu'une idée, vous devrez peut-être l'améliorer, mais j'espère que cela vous aidera à trouver une bonne solution :)
Vous pouvez également accéder aux cookies des clients et vérifier un code de pays / devise et, s'il est défini, procéder différemment et n'appeler pas la fonction geoip ...
la source
Vous avez suggéré la mise en cache par utilisateur, ce qui est de la folie. Vos taux d'accès au cache seront presque nuls annulant tout avantage d'utiliser Varnish en premier lieu. Sans oublier que Varnish travaillera extrêmement dur grâce à son mécanisme LRU pour éliminer les anciennes entrées de cache par utilisateur afin de faire de la place pour les nouvelles entrées de cache par utilisateur.
Vous avez quelques options,
la source