Быстрый CloudFlare «новый пользователь» вопрос для вас:
ПРЕДПОСЫЛКИ: HTML-страницы, обслуживаемые моим исходным сервером, никогда не меняются. Весь динамический контент загружается через JavaScript после загрузки страницы в браузере пользователя. Динамическое содержимое, полученное с помощью JavaScript, частично зависит от строки запроса URL-адреса, но сама строка запроса не влияет на изначально загруженное содержимое HTML. Поэтому все следующие URL-адреса генерируют точно такой же HTML из источника до того, как в браузере на него воздействует JavaScript:
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
ВОПРОС: Учитывая, что CloudFlare по умолчанию не кэширует HTML, как мне составить мои правила страницы, чтобы одна кэшированная копия https://www.example.com/private/my-investments?[anyValue] возвращалась всем пользователям ? Вот что я попробовал:
«CACHE EVERYTHING:» Использование директивы «Cache Everything» вызывает кэширование моего HTML (хорошо), но при этом используется вся строка запроса как часть ключа кэша (плохо). Так что, если пользователь нажимает следующий URL ...
https://www.example.com/private/my-investments?portfolioID=296
... и затем через десять секунд тот же URL попадает в другую строку запроса, например:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare обрабатывает этот последний запрос как MISS кеша (cf-cache-status: MISS) и снова обращается к моему исходному серверу. Это несмотря на то, что HTML-код, возвращаемый из источника, идентичен для обоих URL-адресов.
«IGNORE QUERY STRING CACHING:« Я точно думал, что исправлю эту проблему, выбрав опцию «IGNORE QUERY STRING CACHING». Но при использовании этой опции в правиле страницы, HTML вообще не кэшируется; Кешируются только файлы .js, .css и .png. И снова мое происхождение получает удар для каждого отдельного вызова данных HTML. :(
Я чувствую, что, должно быть, упускаю что-то очевидное. Есть предположения?
ОБНОВЛЕНИЕ : была идея, которой я хочу управлять Вами. Могу ли я решить эту проблему, изменив мою внутреннюю схему URL-адресов на «#» вместо «?» Так что вместо URL, как ...
https://www.example.com/private/my-investments?portfolioID=296
..Я бы использовал что-то вроде:
https://www.example.com/private/my-investments#portfolioID=296
Это предотвратит передачу параметров строки запроса в CloudFlare вообще ... Как вы думаете?
Фест
источник
Ответы:
(Ответ добавлен для @Festus Martingale, чтобы пометить вопрос как ответ).
Замена
?
с#
решена проблема , поскольку он предотвращает строку запроса, передаваемые от CloudFlare , как представляется в виде фрагмента хэш.источник