ความแตกต่างระหว่างExpires
และCache-Control
ส่วนหัวคืออะไร?
ความแตกต่างระหว่างExpires
และCache-Control
ส่วนหัวคืออะไร?
คำตอบ:
Cache-Control
เป็นที่รู้จักใน HTTP / 1.1 Expires
และข้อเสนอทางเลือกมากขึ้นกว่า สามารถใช้เพื่อทำสิ่งเดียวกันให้สำเร็จ แต่ค่าข้อมูลสำหรับExpires
เป็นวันที่ของ HTTP ในขณะที่Cache-Control
max-age ให้คุณระบุจำนวนเวลาที่สัมพันธ์กันดังนั้นคุณสามารถระบุ "X ชั่วโมงหลังจากที่มีการร้องขอหน้า"
การควบคุมแคช HTMLเป็นคำถามที่คล้ายกันมากและมีลิงก์ที่ดีสำหรับการสอนแคชที่ควรตอบคำถามส่วนใหญ่ของคุณ (เช่นhttp://www.mnot.net/cache_docs/#EXPIRES ) ในการสรุปผลExpires
ขอแนะนำให้ใช้กับทรัพยากรคงที่เช่นรูปภาพและCache-Control
เมื่อคุณต้องการควบคุมวิธีการแคชให้สมบูรณ์ยิ่งขึ้น
หากคุณใช้ CDN (Cloud Delivery Network) ฉันแนะนำให้ใช้ Cache-Control ด้วยเวลาสูงสุดในไม่กี่วินาที ตัวอย่างเช่นการควบคุมแคช: max-age = 604800 วิธีนี้จะช่วยป้องกันการร้องขอไปยังเซิร์ฟเวอร์ต้นทางของคุณ: ด้วย "Exp Wed, 30 Oct 20xx 04:37:07 GMT" เบราว์เซอร์ทั้งหมดจะขอให้คุณพร้อมกัน
cache-control
ในฐานะที่เป็นวันนี้ใช้วินาทีสถานการณ์ของคุณมากไม่น่าและพฤติกรรมเป็นเช่นเดียวกับ ดังนั้นฉันจึงไม่เห็นสาเหตุที่จะมีการร้องขอยอดเขาเมื่อใช้Expires:
อ้างอิงจากบทความ Google Developers, การแคช HTTP :
ส่วนหัวของ Cache-Control ถูกกำหนดเป็นส่วนหนึ่งของข้อมูลจำเพาะ HTTP / 1.1 และแทนที่ส่วนหัวก่อนหน้า (เช่นหมดอายุ) ที่ใช้เพื่อกำหนดนโยบายการตอบสนองการแคช เบราว์เซอร์ที่ทันสมัยทั้งหมดรองรับการควบคุมแคชดังนั้นนั่นคือทั้งหมดที่เราต้องการ
Cache-Control ถูกกำหนดใน HTTP / 1.1 จะบอกกลไกการแคชทั้งหมดจากเซิร์ฟเวอร์ไปยังไคลเอนต์ว่าพวกเขาอาจแคชวัตถุนี้ Cache-Control: max-age=3600
มีหน่วยวัดเป็นวินาที
Expires
ข้อมูลส่วนหัวให้วันที่ / เวลาหลังจากที่การตอบสนองถือว่าเก่า หมดค่าเป็น HTTP Expires: Tue, 18 Jul 2017 16:07:23 GMT
ประทับเวลาวันที่:
หากคำตอบรวมถึงCache-Control
เขตข้อมูลที่มีmax-age
คำสั่งผู้รับจะต้องละเว้นExpires
เขตข้อมูลนั้น
Heroku devcenter มีบทความที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้
อ้างจากมัน
ในขณะที่ส่วนหัว Cache-Control เปิดการแคชฝั่งไคลเอ็นต์และตั้งค่าอายุสูงสุดของทรัพยากรส่วนหัว Expires จะถูกใช้เพื่อระบุจุดเฉพาะในเวลาที่ทรัพยากรไม่ถูกต้องอีกต่อไป
ยกเว้นตัวเลือกส่วนตัว / สาธารณะของ CC ฉันไม่เห็นความแตกต่างเลย เมื่อใช้ Expires เช่น "access plus 1 ปี / เดือน / สัปดาห์ / วัน" จะทำงานในลักษณะเดียวกับที่ CC ทำ
หากคุณยังสนใจฉันปล่อยให้คำแนะนำนี้โดยตรงจากเด็ก ๆ ของ google https://developers.google.com/speed/docs/insights/LeverageBrowserCaching พวกเขาต้องการการหมดอายุก่อนการควบคุมแคช