Quiero que una tienda elija de manera inteligente una moneda predeterminada basada en la IP del cliente utilizando GeoIP cuando visite por primera vez (sin cookie de moneda preseleccionada). La tienda está detrás de Varnish utilizando la excelente extensión de trementina de Nexcess.
La extensión maneja la multa de moneda siempre que la cookie de moneda estándar de Magento se configure en una solicitud determinada.
Mis pensamientos en esta etapa son:
- Agregue VCL en la configuración de Varnish para realizar la búsqueda GeoIP (en C) y configure la cookie en la solicitud entrante, si aún no está configurada, por supuesto.
- Agregue un bloque en caché por usuario que realiza la búsqueda y establece la cookie (aunque esto no se aplicaría en la primera carga de la página)
¿Me estoy perdiendo una técnica obvia, tal vez algún JS del lado del cliente a una ruta de URL en caché sin barniz que haga la determinación?
¿Alguien sabe la mejor manera de hacer esto?
No he hecho esto antes, pero esto es lo que se me pasa por la mente:
Use libvmod-geoip para determinar el código de país (no he usado esta extensión de barniz, tenga cuidado ;-)) https://github.com/lampeh/libvmod-geoip
Luego extiende la función hash
sub vcl_hash()
para agregar el código de país a las claves de caché. Eso le permite almacenar en caché todo según el código de país.También agrega el código del país como encabezado, de
set req.http.X-GeoIP = geoip.client_country_code();
modo que el servidor de magento pueda determinar el país correcto y entregar el material correcto.Esto es solo una idea, es posible que deba mejorarlo, pero con suerte lo ayudará a encontrar una buena solución :)
También puede acceder a las cookies de los clientes y verificar el código de país / moneda y, si está configurado, ir por un camino diferente y no llamar a la función geoip ...
fuente
Sugirió el almacenamiento en caché por usuario, lo cual es una locura. Sus tasas de aciertos de caché serán casi nulas y anularán cualquier beneficio de usar Varnish en primer lugar. Sin mencionar que Varnish trabajará extremadamente duro a través de su mecanismo LRU para deshacerse de las entradas antiguas de caché por usuario para hacer espacio para nuevas entradas de caché por usuario.
Tienes pocas opciones,
fuente