ทำไมคุณสมบัติ Cache-Control ส่งในหัวข้อการร้องขอ (ไคลเอนต์ไปยังเซิร์ฟเวอร์)?


163

หลังจากอ่านเกี่ยวกับCache-Controlฟิลด์ของส่วนหัว HTTP แล้ว

ผมเข้าใจว่าCache-Controlข้อมูลในส่วนหัวของการตอบสนอง HTTP (เซิร์ฟเวอร์ไปยังลูกค้า) ระบุคำสั่งสำหรับเซิร์ฟเวอร์พร็อกซี่เบราว์เซอร์กลาง / ลูกค้าเกี่ยวกับวิธีการจัดการกับการตอบสนองโดยการส่งค่าที่แตกต่างกันสำหรับCache-Controlสนาม: private, public, no-cacheหรือno-storeในส่วนหัวของการตอบสนอง

แต่ฉันไม่เข้าใจว่าทำไมเราต้องส่งCache-Controlแอตทริบิวต์ในส่วนหัวคำขอ (ไคลเอนต์ไปยังเซิร์ฟเวอร์)

คำตอบ:


137

Cache-Control: no-cacheโดยทั่วไปจะใช้ในส่วนหัวคำขอ (ส่งจากเว็บเบราว์เซอร์ไปยังเซิร์ฟเวอร์) เพื่อบังคับให้ตรวจสอบความถูกต้องของทรัพยากรในพร็อกซีกลาง หากลูกค้าไม่ได้ส่งคำขอนี้ไปยังเซิร์ฟเวอร์ผู้รับมอบฉันทะระดับกลางจะส่งคืนสำเนาของเนื้อหาหากเป็นเนื้อหาใหม่ (ยังไม่หมดอายุตามExpireหรือmax-ageเขตข้อมูล) Cache-Controlชี้นำพร็อกซี่เหล่านี้เพื่อตรวจสอบสำเนาอีกครั้งแม้ว่ามันจะสด


8
อาจจะสายเกินไปที่นี่ แต่ยกเว้นว่ามีการใช้งานอื่น ๆ ? มีการใช้ฟิลด์อายุสูงสุดเพื่อวัตถุประสงค์ใด ๆ หรือไม่?
Sam

เหตุใดเบราว์เซอร์สมัยใหม่จึงมีแนวโน้มที่จะทำเช่นนี้? พวกเขาไม่เชื่อใจผู้รับมอบฉันทะระดับกลางแม้ว่าพวกเขาจะทำงานได้ตามมาตรฐานของเว็บหรือไม่?
rogerdpack

1
@rogerdpack ไม่มีเพราะพวกเขาทำไว้วางใจพวกเขาดังนั้นพวกเขาส่งส่วนหัวที่พวกเขาไว้วางใจจะได้รับเกียรติเพื่อแสดงให้เห็นว่าพวกเขามีเหตุผลพิเศษบางอย่างสำหรับการกำหนดความสดใหม่มากกว่าการใช้งานมากที่สุดจำเป็น
Jon Hanna

1
@rogerdpack หากคุณเพิ่งทำสิ่งที่คุณรู้ว่าจะมีการเปลี่ยนแปลงสถานะและต้องการที่จะสะท้อนให้เห็นว่าจะเป็นกรณีที่คลาสสิก
Jon Hanna

8
@JonHanna บางทีคุณได้เลือก "ปิดการใช้แคช" ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome หรือไม่ : D
Gregory Magarshak

15

ลูกค้าสามารถส่งCache-Controlส่วนหัวในคำขอเพื่อขอพฤติกรรมการแคชเฉพาะเช่นการตรวจสอบความถูกต้องจากเซิร์ฟเวอร์ต้นทางและพร็อกซีเซิร์ฟเวอร์กลางใด ๆ ตามเส้นทางคำขอ


4

นอกเหนือจากคำตอบข้างต้น
อาจมีการตั้งค่าที่ใช้งานการผูกมัดแคช ในกรณีนั้นหากคำขอมาที่แคชแรกซึ่งไม่เป็นที่พอใจก็อาจไปที่แคชที่ถูกผูกมัดเพิ่มเติม

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


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

Cache-Control: no-cacheจะบอกผู้รับมอบฉันทะเพื่อให้แน่ใจว่าการตอบสนองนั้นได้รับการตรวจสอบความถูกต้องตลอดเวลา
mogsie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.