Por qué un conmutador de moneda y un caché de página se enfrentan
Casi todos los tickets de soporte que comienzan con "los precios se muestran en la moneda incorrecta" terminan en el mismo lugar: una caché de página. Vale la pena entender por qué los dos se enfrentan, porque la solución depende de cuál de ellos está ganando.
Lo que realmente hace una caché de página
Una caché de página almacena el HTML final de una página y sirve ese mismo HTML a todos. Ese es el punto — el servidor deja de renderizar y comienza a entregar un archivo. También es exactamente el problema. El precio en una página de producto no es un texto fijo: depende de qué moneda seleccionó este visitante en particular. Almacena en caché la página mientras un visitante navega en USD, y el siguiente visitante también obtiene USD, independientemente de lo que haya elegido.
Las dos soluciones
Existen solo dos enfoques honestos, y FOX soporta ambos.
Excluir las páginas de la caché. Los precios siempre son correctos, y pierdes la velocidad para la que se compró la caché. Esta es la opción correcta para las páginas del carrito, finalizar compra y la cuenta, que nunca deberían estar en caché de todos modos.
Almacenar en caché la página y corregir los precios en el navegador. FOX entrega la página en caché tal como está, luego redibuja los nodos de precio al cargar en la moneda que el visitante haya seleccionado. Esto es lo que activa la opción Cache en la configuración del plugin. La página sigue siendo rápida, y hay un breve momento antes de que se aplique el redibujo — que es para lo que sirve el precargador sobre el precio.
Dónde falla
El segundo enfoque necesita que el plugin conozca la moneda del visitante, y ahí es donde los plugins de caché y las CDN interfieren.
Si el plugin almacena la moneda en una cookie, la primera solicitud de un nuevo visitante establece esa cookie. Las cachés agresivas — Cloudflare APO es el ejemplo más estricto — tratan cualquier respuesta que lleve un encabezado Set-Cookie como personalizada y se niegan a almacenarla en caché. El resultado es un sitio donde la caché parece estar habilitada y nunca almacena nada realmente.
Desde la v.2.5.0 FOX evita esto. Con Storage establecido en Transient y la opción de caché habilitada, el plugin guarda una clave aleatoria en el localStorage del navegador en lugar de establecer una cookie, por lo que el HTML que sale del servidor es idéntico para todos y la caché puede hacer su trabajo. Cualquier otra combinación de almacenamiento se comporta como antes.
La lista de verificación
- Páginas del carrito, finalizar compra y cuenta excluidas de la caché — siempre.
- La opción Cache del plugin habilitada si las páginas de la tienda están en caché.
- Storage establecido en Transient si hay una CDN delante del sitio.
- El JavaScript del plugin no debe ser diferido o combinado por un optimizador — el redibujo se ejecuta al cargar, y un optimizador que lo retrasa convierte el precargador en un spinner permanente.
Si los precios siguen siendo incorrectos después de los cuatro, la caché no es la causa. Abre un tema de soporte con la URL de la página y la configuración de caché, y lo revisaremos.