มีวิธีปิดแคชของเบราว์เซอร์ไคลเอ็นต์สำหรับบางเว็บไซต์หรือไม่


10

นี่เป็นคำถามที่ไม่เชื่อเรื่องพระเจ้าของเบราว์เซอร์ แต่เรากำลังทดสอบกับ IE9

หนึ่งในเว็บแอพที่ผู้ใช้ของเราเข้าชมนั้นถูกแคชแบบสุ่มและการเปลี่ยนแปลงจะไม่ปรากฏขึ้นเมื่อพวกเขาควร ไม่มีไซต์อื่นที่มีปัญหานี้และเราได้ทำงานร่วมกับผู้จำหน่ายที่อ้างว่าไม่ได้เกิดขึ้นกับใคร หากเราใช้แถบเครื่องมือผู้พัฒนาและเลือก "บังคับให้รีเฟรชเซิร์ฟเวอร์" ทุกอย่างอัปเดตอย่างถูกต้อง

แทนที่จะแก้ปัญหาอย่างแท้จริงที่เราคิดว่าควรหลีกเลี่ยงโดยการปิดการใช้งานแคชสำหรับไซต์เฉพาะนี้ อย่างไรก็ตามเราไม่ทราบวิธี

คำตอบ:


10

วิธีที่เหมาะสมในการปิดใช้งานการแคชเบราว์เซอร์คือโดยส่วนหัว HTTP จากเว็บแอปเอง ส่วนหัว HTTP 1.1 "การควบคุมแคช" เพียงอย่างเดียวน่าจะเพียงพอสำหรับเบราว์เซอร์หลังปี 2000 แต่สำหรับการปกป้องเป็นพิเศษเซิร์ฟเวอร์สามารถปล่อยทั้งHTTP 1.1 "Cache-Control" และ HTTP 1.0 "หมดอายุ" หัวกัน

วิธีที่แฮ็ก แต่เห็นได้ว่าบางครั้งในการจัดการการทำให้แคชใช้ไม่ได้คือสตริง "cachebuster"ใน URL จากเซิร์ฟเวอร์ cachebuster มักจะประทับเวลาตามและถูกเพิ่มเป็นการสอบถามไปยังแต่ละลิงค์ HTML เพื่อให้ URL ที่ไม่ซ้ำกันและใช้เพียงครั้งเดียว http://example.org/filename.html?cb=<timestamp+random_value>สิ่งที่ชอบ มันน่าเกลียดและไม่ทำอะไรเลยที่ส่วนหัว HTTP ทำไม่ได้ดีกว่า แต่มันสามารถใช้เป็นแฮ็กสำหรับผู้ชมที่ จำกัด (fx บนอินทราเน็ต) หรือเป็นเลเยอร์เพิ่มเติมของการป้องกันพร้อมกับส่วนหัว HTTP ที่เหมาะสม

AFAIK ไม่มีทางที่จะปิดการเลือกแคช สำหรับไซต์เดียวจากภายใน Internet Explorer เท่านั้น วิธีแก้ปัญหาหนึ่ง (ซับซ้อนเลือด) อาจจะติดตั้งVarnish Cacheเป็นตัวกลางสำหรับแคชบน LAN ของคุณตั้งค่า Internet Explorer ให้ใช้ Varnish เป็นพร็อกซี HTTP และใช้ภาษา VCL บน Varnishเพื่อเขียนส่วนหัว HTTP สำหรับไซต์เฉพาะนี้อีกครั้งเท่านั้น

สุจริตฉันคิดว่าผู้ขายของคุณทำผิดพลาดที่นี่ ฉันอยากจะแนะนำให้ติดตั้งFiddler2 สำหรับ IEหรือFirebug สำหรับ Firefoxและดูที่ส่วนหัว HTTP จริงที่ webapp ส่ง ความสัมพันธ์กับมาร์คอทแคชกวดวิชาที่ฉันเชื่อมโยงกับข้างต้น - ฉันคาดเดาหัวอนุญาตให้แคชหรืออย่างน้อยไม่ครุ่นคิดห้ามแคช


0

ตรวจสอบให้แน่ใจว่าคุณตั้งค่าส่วนหัวหมดอายุที่เหมาะสม หากคุณใส่เวลาในอดีตเนื้อหาจะไม่ถูกแคช ตรวจสอบเวลา / วันที่บนเวิร์กสเตชันที่ใช้ IS9 ดูเพิ่มเติมที่: http://www.mnot.net/cache_docs/


0

หากคุณไม่สามารถปรับเปลี่ยนเนื้อหาของเว็บไซต์ที่เป็นปัญหาคุณสามารถใช้พร็อกซีเซิร์ฟเวอร์เพื่อแก้ไขเนื้อหาระหว่างเบราว์เซอร์ของคุณ สิ่งนี้จะช่วยให้คุณเปลี่ยนส่วนหัวที่หมดอายุ


0

หากเว็บไซต์อนุญาตให้คุณเชื่อมต่อผ่าน HTTPS ขึ้นอยู่กับเบราว์เซอร์ของคุณคุณสามารถปิดใช้งานการแคชหน้าเข้ารหัส

ใน IE สามารถทำได้ดังนี้:

คุณสามารถตรวจสอบการตั้งค่าของ IE ใน Internet Options-> Advanced-> Security-> อย่าบันทึกหน้าที่เข้ารหัสลงดิสก์


เขาขอวิธีแก้ปัญหาที่ไม่เชื่อเรื่องเบราว์เซอร์
Mircea Vutcovici

1
@Mircea นี่คือทางออกที่ไม่เชื่อเรื่องพระเจ้าของเบราว์เซอร์ ฉันเพิ่งให้ตัวอย่างฟรีโดยใช้ IE เบราว์เซอร์อื่น ๆ มีตัวเลือกให้ปิดใช้งานการแคช SSL แต่การตั้งค่าต่าง ๆ
JeffG

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

คุณอาจต้องการพิจารณาใช้ปุ่มสุ่มในแถบ URL ซึ่งจะเป็นการป้องกันการแคชภายในเบราว์เซอร์


สิ่งนี้จะใช้งานได้หาก GollyJer มีความสามารถในการปรับเปลี่ยนเว็บไซต์ ฉันรวบรวมเขาไม่ได้ขึ้นอยู่กับคำถามของเขา
JeffG

เพียงเพื่อความแม่นยำ "ปุ่มสุ่ม" ไม่ได้ป้องกันการแคชอย่างมีประสิทธิภาพ เบราว์เซอร์และในระหว่างแคชอาจยังเก็บการตอบสนองบนดิสก์ แต่ในครั้งต่อไปที่มีการร้องขอไฟล์เดียวกันคีย์สุ่มจะทำให้ URL แตกต่างกันดังนั้นเวอร์ชันแคชบนดิสก์จะไม่ถูกใช้ การเป็นตัวแทนใหม่จะถูกดาวน์โหลดจากเซิร์ฟเวอร์และอาจเก็บไว้ในดิสก์ นอกจากนี้แท็ก META PRAGMA นั้นเก่าและไม่ควรใช้ - คำแนะนำคือใช้ส่วนหัว HTTP Expires และ Cache-Control
Jesper M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.