Szybkie pytanie dla nowego użytkownika CloudFlare:
TŁO: Strony HTML obsługiwane przez mój serwer pochodzenia nigdy się nie zmieniają. Cała zawartość dynamiczna jest pobierana przez JavaScript po załadowaniu strony w przeglądarce użytkownika. Dynamiczna treść pochodząca z JavaScript zależy częściowo od ciągu zapytania adresu URL, ale sam ciąg zapytania nie ma wpływu na pierwotnie pobraną treść HTML. Dlatego poniższe adresy URL generują dokładnie ten sam kod HTML z miejsca początkowego przed uruchomieniem przez JavaScript w przeglądarce:
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
PYTANIE: Biorąc pod uwagę, że CloudFlare domyślnie nie buforuje HTML, jak mam skonstruować moje reguły strony, aby pojedyncza kopia https://www.example.com/private/my-investments?[anyValue] została zwrócona wszystkim użytkownikom ? Oto, co próbowałem:
„PRZECHOWYWAJ WSZYSTKO:” Użycie dyrektywy „Cache Everything” powoduje, że mój HTML jest buforowany (dobrze), ale używa całego ciągu zapytania jako części klucza pamięci podręcznej (źle). Więc jeśli użytkownik kliknie następujący adres URL ...
https://www.example.com/private/my-investments?portfolioID=296
... a następnie dziesięć sekund później trafia na ten sam adres URL z innym ciągiem zapytania, na przykład:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare traktuje to ostatnie żądanie jako pamięć podręczną MISS (cf-cache-status: MISS) i ponownie uderza mój serwer źródłowy. Dzieje się tak pomimo faktu, że HTML zwrócony z pochodzenia jest identyczny dla obu adresów URL.
„IGNORE QUERY STRING CACHING:” Pomyślałem, że na pewno rozwiążę ten problem, wybierając opcję „IGNORE QUERY STRING CACHING”. Ale podczas korzystania z tej opcji w Regule strony żaden HTML nie jest buforowany; Buforowane są tylko pliki .js, .css i .png. I po raz kolejny moje pochodzenie trafia w każde wywołanie danych HTML. :(
Czuję, że brakuje mi czegoś oczywistego. jakieś pomysły?
AKTUALIZACJA : Miałem pomysł, który chcę uruchomić. Czy mogę rozwiązać ten problem, zmieniając wewnętrzny schemat URL na „#” zamiast „?” Zamiast adresu URL takiego jak ...
https://www.example.com/private/my-investments?portfolioID=296
.. użyłbym czegoś takiego:
https://www.example.com/private/my-investments#portfolioID=296
Zapobiegałoby to w ogóle przesłaniu parametrów ciągu zapytania do CloudFlare ... Co sądzisz?
Festus
źródło
Odpowiedzi:
(Dodano odpowiedź dla @Festus Martingale, aby oznaczyć pytanie jako odpowiedź).
Wymiana
?
z#
rozwiązać ten problem, ponieważ zapobiega ciągu zapytania przesyłane do cloudflare zamieszczony jako fragment mieszania.źródło