cache-control
ส่วนหัวเป็นกลไกหลักสำหรับเซิร์ฟเวอร์ HTTP จะบอกพร็อกซีแคช "ความสด" ของการตอบสนอง (กล่าวคือนานแค่ไหน / ถ้าจะเก็บการตอบสนองในแคช)
ในบางสถานการณ์cache-control
คำสั่งไม่เพียงพอ การอภิปรายจากกลุ่มการทำงาน HTTP ถูกเก็บถาวรที่นี่โดยอธิบายถึงหน้าที่มีการเปลี่ยนแปลงตามภาษาเท่านั้น นี่ไม่ใช่กรณีการใช้งานที่ถูกต้องสำหรับส่วนหัวที่แตกต่างกัน แต่บริบทมีค่าสำหรับการสนทนาของเรา (แม้ว่าฉันเชื่อว่าส่วนหัว Vary จะแก้ปัญหาได้ในกรณีนั้น แต่ก็มีวิธีที่ดีกว่า) จากหน้านั้น:
Vary
โดยเฉพาะอย่างยิ่งสำหรับกรณีเหล่านั้นที่สิ้นหวังหรือซับซ้อนเกินไปสำหรับพร็อกซีในการจำลองสิ่งที่เซิร์ฟเวอร์จะทำ
ตัวอย่างที่สร้างขึ้น:
เซิร์ฟเวอร์ HTTP ของคุณมีหน้า Landing Page ขนาดใหญ่ คุณมีสองหน้าที่แตกต่างกันเล็กน้อยโดยมี URL เดียวกันขึ้นอยู่กับว่าผู้ใช้เคยอยู่ที่นั่นมาก่อนหรือไม่ คุณแยกความแตกต่างระหว่างคำขอและ "จำนวนการเยี่ยมชม" ของผู้ใช้โดยพิจารณาจากคุกกี้ แต่ - เนื่องจากหน้า Landing Page ของเซิร์ฟเวอร์ของคุณมีขนาดใหญ่มากคุณจึงต้องการให้พร็อกซีตัวกลางแคชการตอบกลับหากเป็นไปได้
ส่วนหัว URL, Last-Modified และ Cache-Control ไม่เพียงพอที่จะให้ข้อมูลเชิงลึกนี้แก่พร็อกซีการแคช แต่ถ้าคุณเพิ่มVary: Cookie
เครื่องมือแคชจะเพิ่มส่วนหัวคุกกี้ในการตัดสินใจในการแคช
สุดท้ายสำหรับการเข้าชมขนาดเล็กเว็บไซต์แบบไดนามิก - ฉันพบเสมอว่าง่ายCache-Control: no-cache, no-store
และPragma: no-cache
เพียงพอ
แก้ไข - เพื่อตอบคำถามของคุณอย่างแม่นยำยิ่งขึ้น: ส่วนหัวคำขอ HTTP "ยอมรับ" กำหนดประเภทเนื้อหาที่ไคลเอ็นต์สามารถประมวลผลได้ หากคุณมีสำเนาของเนื้อหาเดียวกันสองชุดใน URL เดียวกันซึ่งแตกต่างกันเฉพาะในประเภทเนื้อหาการใช้งานVary: Accept
อาจเหมาะสม
อัปเดต 11 ก.ย. 55:
ฉันรวมลิงก์สองลิงก์ที่ปรากฏในความคิดเห็นตั้งแต่ความคิดเห็นนี้ถูกโพสต์ครั้งแรก ทั้งคู่เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับตัวอย่างในโลกแห่งความจริง (และปัญหา) ด้วย Vary: Accept; หากคุณกำลังอ่านคำตอบนี้คุณจำเป็นต้องอ่านลิงก์เหล่านั้นด้วย
ครั้งแรกจาก EricLaw ที่โดดเด่นเกี่ยวกับพฤติกรรมของ Internet Explorer ที่มีแตกต่างกันไปส่วนหัวและบางส่วนของความท้าทายที่จะนำเสนอให้กับนักพัฒนา: วารีหัวป้องกันแคชใน IE กล่าวโดยย่อ IE (ก่อน IE9) จะไม่แคชเนื้อหาใด ๆ ที่ใช้ส่วนหัว Vary เนื่องจากแคชของคำขอไม่มีส่วนหัว HTTP Request EricLaw (Eric Lawrence ในโลกแห่งความเป็นจริง) เป็นผู้จัดการโปรแกรมในทีม IE
ประการที่สองคือจาก Eran เมดานและเป็นที่กำลังอภิปรายของพฤติกรรมที่ไม่คาดคิดแตกต่างกันที่เกี่ยวข้องใน Chrome: ถือหางไม่ได้จัดการกับวารีหัวได้อย่างถูกต้อง มันเกี่ยวข้องกับพฤติกรรมของ IE ยกเว้นนักพัฒนา Chrome ใช้วิธีการที่แตกต่างออกไปแม้ว่าดูเหมือนว่าจะไม่ได้เป็นทางเลือกโดยเจตนาก็ตาม