Question "nouvel utilisateur" rapide pour CloudFlare:
CONTEXTE: Les pages HTML servies par mon serveur d'origine ne changent jamais. Tout le contenu dynamique est téléchargé via JavaScript après le chargement de la page dans le navigateur de l'utilisateur. Le contenu dynamique dérivé du JavaScript dépend en partie de la chaîne de requête de l'URL, mais la chaîne de requête elle-même n'a aucun effet sur le contenu HTML téléchargé à l'origine. Les URL suivantes génèrent donc toutes exactement le même HTML à partir de l'origine avant d'être traitées par JavaScript dans le navigateur:
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
QUESTION: Étant donné que CloudFlare ne met pas en cache HTML par défaut, comment dois-je construire mes règles de page afin qu'une seule copie mise en cache de https://www.example.com/private/my-investments?[anyValue] soit renvoyée à tous les utilisateurs ? Voici ce que j'ai essayé:
"TACHE TOUT:" L'utilisation de la directive 'Cache Everything' fait que mon HTML est mis en cache (bon) mais il utilise la chaîne de requête entière dans le cadre de la clé de cache (mauvaise). Donc, si un utilisateur frappe l'URL suivante ...
https://www.example.com/private/my-investments?portfolioID=296
... puis dix secondes plus tard, frappe la même URL avec une chaîne de requête différente, comme:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare traite cette dernière demande comme un cache MISS (cf-cache-status: MISS) et frappe à nouveau mon serveur d'origine. Ceci malgré le fait que le code HTML renvoyé depuis l'origine est identique pour les deux URL.
"IGNORE QUERY STRING CACHING:" Je pensais à coup sûr résoudre ce problème en sélectionnant l'option "IGNORE QUERY STRING CACHING". Mais lorsque vous utilisez cette option dans une règle de page, aucun code HTML n'est mis en cache du tout; Seuls les fichiers .js, .css et .png sont mis en cache. Et encore une fois, mon origine est touchée pour chaque appel de données HTML. :(
J'ai l'impression que je dois manquer quelque chose d'évident. Des pensées?
MISE À JOUR : J'ai eu une idée que je veux diriger par vous. Puis-je résoudre ce problème en modifiant mon schéma d'URL interne pour utiliser «#» au lieu de «?» Donc, au lieu d'une URL comme ...
https://www.example.com/private/my-investments?portfolioID=296
..J'utiliserais quelque chose comme:
https://www.example.com/private/my-investments#portfolioID=296
Cela empêcherait les paramètres de chaîne de requête d'être transmis à CloudFlare ... Que pensez-vous?
Festus