Pregunta rápida de 'nuevo usuario' de CloudFlare para usted:
ANTECEDENTES: las páginas HTML publicadas por mi servidor de origen nunca cambian. Todo el contenido dinámico se descarga a través de JavaScript después de cargar la página en el navegador del usuario. El contenido dinámico derivado de JavaScript depende en parte de la cadena de consulta de la URL, pero la cadena de consulta en sí no afecta el contenido HTML que se descargó originalmente. Por lo tanto, las siguientes URL generan exactamente el mismo HTML desde el origen antes de que JavaScript actúe sobre ellas en el navegador:
https://www.example.com/private/my-investments?portfolioID=296
https://www.example.com/private/my-investments?portfolioID=325
https://www.example.com/private/my-investments?portfolioID=319
PREGUNTA: Dado que CloudFlare no almacena en caché HTML de forma predeterminada, ¿cómo construiré las Reglas de mi página para que se devuelva a todos los usuarios una copia en caché de https://www.example.com/private/my-investments?[anyValue] ? Esto es lo que he intentado:
"CACHE TODO:" El uso de la directiva 'Cache Everything' hace que mi HTML se almacene en caché (bueno) pero usa toda la cadena de consulta como parte de la clave de caché (malo). Entonces, si un usuario llega a la siguiente URL ...
https://www.example.com/private/my-investments?portfolioID=296
... y luego diez segundos después llega a la misma URL con una cadena de consulta diferente, como:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare trata esa última solicitud como un caché MISS (cf-cache-status: MISS) y vuelve a mi servidor de origen. Esto a pesar del hecho de que el HTML devuelto desde el origen es idéntico para ambas URL.
"IGNORE QUERY STRING CACHING:" Pensé con seguridad que solucionaría este problema seleccionando la opción "IGNORE QUERY STRING CACHING". Pero cuando se usa esta opción en una regla de página, no se almacena en caché HTML; Solo los archivos .js, .css y .png se almacenan en caché. Y una vez más, mi origen se ve afectado por cada llamada de datos HTML. :(
Siento que me falta algo obvio. ¿Alguna idea?
ACTUALIZACIÓN : Tenía una idea que quiero correr por usted. ¿Podría resolver este problema cambiando mi esquema de URL interna para usar '#' en lugar de '?' Entonces, en lugar de una URL como ...
https://www.example.com/private/my-investments?portfolioID=296
.. Usaría algo como:
https://www.example.com/private/my-investments#portfolioID=296
Esto evitaría que los parámetros de la cadena de consulta se transmitan a CloudFlare en absoluto ... ¿Qué opinas?
Festus