Pertanyaan 'pengguna baru' CloudFlare cepat untuk Anda:
LATAR BELAKANG: Halaman HTML yang dilayani oleh server asal saya tidak pernah berubah. Semua konten dinamis diunduh melalui JavaScript setelah halaman dimuat di browser pengguna. Konten dinamis yang dihasilkan oleh JavaScript sebagian bergantung pada string kueri URL, tetapi string kueri itu sendiri tidak memengaruhi konten HTML yang awalnya diunduh. Karenanya, URL berikut semuanya menghasilkan HTML yang persis sama dari asalnya sebelum ditindaklanjuti oleh JavaScript di browser:
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
PERTANYAAN: Mengingat bahwa CloudFlare tidak men-cache HTML secara default, bagaimana saya membangun Aturan Halaman saya sehingga satu salinan cache https://www.example.com/private/my-investments?[anyValue] dikembalikan ke semua pengguna ? Inilah yang saya coba:
"CACHE EVERYTHING:" Menggunakan arahan 'Cache Everything' menyebabkan HTML saya di-cache (bagus) tetapi menggunakan seluruh string kueri sebagai bagian dari kunci cache (buruk). Jadi, jika pengguna mengklik URL berikut ...
https://www.example.com/private/my-investments?portfolioID=296
... lalu sepuluh detik kemudian klik URL yang sama dengan string kueri yang berbeda, seperti:
https://www.example.com/private/my-investments?portfolioID=325
... CloudFlare memperlakukan permintaan terakhir sebagai cache MISS (cf-cache-status: MISS) dan mengenai server asal saya lagi. Terlepas dari kenyataan bahwa HTML yang dikembalikan dari asal sama untuk kedua URL.
"MENGGABUNGKAN PENCARIAN STRING QUERY:" Saya pikir pasti saya akan memperbaiki masalah ini dengan memilih opsi "PENYALINAN STRING PENIPUAN STRING". Tetapi ketika menggunakan opsi ini dalam Aturan Halaman, tidak ada HTML yang di-cache sama sekali; Hanya file .js, .css, dan .png yang di-cache. Dan sekali lagi asal saya terkena untuk setiap panggilan tunggal untuk data HTML. :(
Saya merasa harus kehilangan sesuatu yang jelas. Adakah pikiran?
UPDATE : Punya ide saya ingin dijalankan oleh Anda. Bisakah saya mengatasi masalah ini dengan mengubah skema URL internal saya untuk menggunakan '#' alih-alih '?' Jadi, bukannya URL seperti ...
https://www.example.com/private/my-investments?portfolioID=296
..Aku Menggunakan sesuatu seperti:
https://www.example.com/private/my-investments#portfolioID=296
Ini akan mencegah parameter string kueri dikirim ke CloudFlare sama sekali ... Bagaimana menurut Anda?
Festus
sumber
Jawaban:
(Jawaban ditambahkan untuk @Festus Martingale untuk menandai pertanyaan sebagai dijawab).
Mengganti
?
dengan#
memecahkan masalah karena mencegah string kueri dikirim ke cloudflare karena muncul sebagai fragmen hash.sumber