Cloudflare: кешуйте статичний HTML, коли URL містить рядок запиту


10

Питання для нового користувача "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? evidenceanyValue] поверталася всім користувачам ? Ось що я спробував:

"КЕШЕ ВСЕ:" Використання директиви "Кеш все" призводить до кешування мого 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 ... Як ви думаєте?

Фестус


Використання "#" замість "?" в URL-адресі вирішено проблему. Sysops може продовжити і видалити моє запитання.
Festus Martingale

4
Інші можуть навчитися тому, що ви зрозуміли тут, тож, можливо, ви можете надати те, що ви зробили вище, як відповідь (з невеликою деталізацією) і прийняти це, коли зможете. Дякую.
дан

Відповіді:


4

(Відповідь додано для @Festus Martingale, щоб позначити питання як відповідь).

Заміна ?з #вирішена проблема , оскільки він запобігає рядок запиту, що передаються від CloudFlare , як представляється у вигляді фрагмента хеш.


Мене звуть Фест. Я позначив це як відповідь.
Festus Martingale
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.