Cloudflare: Zwischenspeichern von statischem HTML, wenn die URL eine Abfragezeichenfolge enthält


10

Schnelle CloudFlare-Frage "Neuer Benutzer" für Sie:

HINTERGRUND: Die von meinem Ursprungsserver bereitgestellten HTML-Seiten ändern sich nie. Alle dynamischen Inhalte werden über JavaScript heruntergeladen, nachdem die Seite in den Browser des Benutzers geladen wurde. Der vom JavaScript abgeleitete dynamische Inhalt hängt teilweise von der Abfragezeichenfolge der URL ab, aber die Abfragezeichenfolge selbst hat keinen Einfluss auf den ursprünglich heruntergeladenen HTML-Inhalt. Die folgenden URLs generieren daher alle genau den gleichen HTML-Code aus dem Ursprung, bevor JavaScript im Browser darauf reagiert:

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

FRAGE: Da CloudFlare HTML standardmäßig nicht zwischenspeichert, wie soll ich meine Seitenregeln so erstellen, dass eine einzelne zwischengespeicherte Kopie von https://www.example.com/private/my-investments?[anyValue] an alle Benutzer zurückgegeben wird ? Folgendes habe ich versucht:

"ALLES CACHEN:" Wenn Sie die Direktive 'Cache Everything' verwenden, wird mein HTML-Code zwischengespeichert (gut), es wird jedoch die gesamte Abfragezeichenfolge als Teil des Cache-Schlüssels verwendet (schlecht). Wenn also ein Benutzer die folgende URL trifft ...

https://www.example.com/private/my-investments?portfolioID=296

... und dann zehn Sekunden später dieselbe URL mit einer anderen Abfragezeichenfolge wie folgt aufrufen:

https://www.example.com/private/my-investments?portfolioID=325

... CloudFlare behandelt diese letztere Anforderung als Cache-MISS (cf-Cache-Status: MISS) und trifft meinen Ursprungsserver erneut. Dies trotz der Tatsache, dass der vom Ursprung zurückgegebene HTML-Code für beide URLs identisch ist.

"IGNORE QUERY STRING CACHING:" Ich war mir sicher, dass ich dieses Problem beheben würde, indem ich die Option "IGNORE QUERY STRING CACHING" auswähle. Bei Verwendung dieser Option in einer Seitenregel wird jedoch überhaupt kein HTML zwischengespeichert. Es werden nur .js-, .css- und .png-Dateien zwischengespeichert. Und wieder wird mein Ursprung bei jedem einzelnen Aufruf von HTML-Daten getroffen. :(

Ich habe das Gefühl, dass mir etwas Offensichtliches fehlen muss. Irgendwelche Gedanken?

UPDATE : Hatte eine Idee, die ich von dir leiten möchte. Könnte ich dieses Problem lösen, indem ich mein internes URL-Schema so ändere, dass '#' anstelle von 'verwendet wird?' Also anstelle einer URL wie ...

https://www.example.com/private/my-investments?portfolioID=296

..Ich würde so etwas verwenden wie:

https://www.example.com/private/my-investments#portfolioID=296

Dies würde verhindern, dass die Parameter der Abfragezeichenfolge überhaupt an CloudFlare übertragen werden ... Was denken Sie?

Festus


Verwenden Sie "#" anstelle von "?" in der URL löste das Problem. Sysops kann meine Frage löschen.
Festus Martingale

4
Andere lernen vielleicht aus dem, was Sie hier herausgefunden haben. Vielleicht können Sie das, was Sie oben getan haben, als Antwort (mit ein wenig Ausarbeitung) angeben und es akzeptieren, wenn Sie können. Vielen Dank.
dan

Antworten:


4

(Antwort hinzugefügt für @Festus Martingale, um die Frage als beantwortet zu markieren).

Durch Ersetzen des wurde das Problem ?durch ein #gelöst, da verhindert wird, dass die Abfragezeichenfolge an Cloudflare übertragen wird, da sie als Hash-Fragment angezeigt wird.


Ich heiße festus Ich habe dies als Antwort markiert.
Festus Martingale
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.