Cloudflare: แคช HTML แบบคงที่เมื่อ URL มีสตริงการสืบค้น


10

คำถาม 'ผู้ใช้ใหม่' Quick 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]จะถูกส่งกลับไปยังผู้ใช้ทุกคน ? นี่คือสิ่งที่ฉันได้ลอง:

"แคชทุกอย่าง:" การใช้คำสั่ง 'ทุกอย่างแคช' ทำให้ 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 QUING STRING CACHING" แต่เมื่อใช้ตัวเลือกนี้ใน Page Rule จะไม่มีการแคช HTML เลย เฉพาะไฟล์. js, .css และ. png และที่มาของฉันอีกครั้งได้รับผลกระทบทุกครั้งที่มีการเรียกข้อมูล HTML :(

ฉันรู้สึกเหมือนฉันต้องคิดถึงบางสิ่งที่ชัดเจน ความคิดใด ๆ

UPDATE : มีความคิดที่ฉันต้องการที่จะดำเนินการโดยคุณ ฉันสามารถแก้ไขปัญหานี้ได้โดยเปลี่ยนรูปแบบ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.