และบอกเบราว์เซอร์ให้โหลดวัตถุ (และ / หรือหน้า ... ทุกสิ่งบนไซต์) เฉพาะเมื่อมีการแก้ไขตั้งแต่เวลาเยี่ยมชมครั้งสุดท้ายเท่านั้น ??? htaccess, httpd.conf ... คุณมีคำสั่งที่ถูกต้องสำหรับกรณีของฉันหรือไม่? ขอบคุณมาก
และบอกเบราว์เซอร์ให้โหลดวัตถุ (และ / หรือหน้า ... ทุกสิ่งบนไซต์) เฉพาะเมื่อมีการแก้ไขตั้งแต่เวลาเยี่ยมชมครั้งสุดท้ายเท่านั้น ??? htaccess, httpd.conf ... คุณมีคำสั่งที่ถูกต้องสำหรับกรณีของฉันหรือไม่? ขอบคุณมาก
คำตอบ:
html5boilerplate.comรวมถึงไฟล์. htaccessที่มีความคิดเห็นดีซึ่งมีการตั้งค่ามาตรฐานมากมายที่คุณควรพิจารณา ในหมู่พวกเขามีการตั้งค่าที่เหมาะสมสำหรับการหมดอายุเนื้อหา (หมดอายุ, E-tags, ... )
นี่เป็นเอกสารเกี่ยวกับ mod_expires
โปรดทราบว่าLast-Modified
ส่วนหัวเป็นส่วนหัวแคชที่อ่อนแอ การตั้งค่าปัจจุบันคือการใช้Cache-Control
ส่วนหัว
Google มีบทความดีๆเกี่ยวกับเรื่องนี้
การหมดอายุและการควบคุมแคช: อายุสูงสุด สิ่งเหล่านี้ระบุ "อายุการใช้งานใหม่" ของทรัพยากรนั่นคือช่วงเวลาที่เบราว์เซอร์สามารถใช้ทรัพยากรแคชโดยไม่ตรวจสอบเพื่อดูว่ามีเวอร์ชันใหม่จากเว็บเซิร์ฟเวอร์หรือไม่ พวกเขาคือ "ส่วนหัวแคชที่แข็งแกร่ง" ที่ใช้โดยไม่มีเงื่อนไข; เบราว์เซอร์จะไม่ออกคำขอ GET ใด ๆ สำหรับทรัพยากรจนกว่าจะถึงวันหมดอายุหรืออายุสูงสุด
Last-Modified และ ETag สิ่งเหล่านี้ระบุคุณสมบัติบางอย่างเกี่ยวกับทรัพยากรที่เบราว์เซอร์ตรวจสอบเพื่อพิจารณาว่าไฟล์เหมือนกันหรือไม่ ในส่วนหัว Last-Modified จะเป็นวันที่เสมอ ในส่วนหัวของ ETag นี่อาจเป็นค่าใด ๆ ที่ระบุทรัพยากรโดยเฉพาะ (รุ่นของไฟล์หรือเนื้อหาแฮชเป็นเรื่องปกติ) Last-Modified เป็นส่วนหัวแคช "อ่อน" ที่เบราว์เซอร์ใช้การวิเคราะห์พฤติกรรมเพื่อกำหนดว่าจะดึงรายการจากแคชหรือไม่ (ฮิวริสติกแตกต่างกันในเบราว์เซอร์ที่ต่างกัน) อย่างไรก็ตามส่วนหัวเหล่านี้อนุญาตให้เบราว์เซอร์อัปเดตทรัพยากรแคชอย่างมีประสิทธิภาพโดยการออกคำขอ GET แบบมีเงื่อนไขตามเงื่อนไขเมื่อผู้ใช้โหลดหน้าซ้ำ GET แบบมีเงื่อนไขจะไม่ส่งคืนการตอบกลับแบบเต็มเว้นแต่ว่าทรัพยากรได้มีการเปลี่ยนแปลงที่เซิร์ฟเวอร์และทำให้เวลาแฝงต่ำกว่า GET แบบเต็ม
ฉันขอแนะนำให้ใช้อย่างใดอย่างหนึ่งCache-Control
หรือExpires
ส่วนหัวตามความจำเป็นเนื่องจากพวกเขาเป็นส่วนหัวแคชที่แข็งแกร่ง ระบบบางระบบจะไม่สนใจวันที่แก้ไขครั้งล่าสุด
จากนั้นคุณสามารถใช้เครื่องมือเช่นcurl
หรือhttp://redbot.orgเพื่อตรวจสอบส่วนหัว
Last-Modified
ส่วนหัวในกรณีที่ไม่มีคำแนะนำในการแคชอื่น ๆ จะทำให้ระยะเวลาแคชถึงไคลเอ็นต์ HTTP หากทรัพยากรไม่ได้รับการแก้ไขตั้งแต่Last-Modified
วันที่ควรพิจารณาทรัพยากรใหม่ ในทางตรงกันข้ามเมื่อใช้Expires
หรือCache-Control
ส่วนหัวที่มาสามารถกำหนดช่วงเวลาความสดใหม่อย่างชัดเจน
Expires
เป็นส่วนหัวที่ไม่เหมาะสมทั้งหมดสำหรับทรัพยากรที่ไม่หมดอายุ ทรัพยากรบางอย่างอาจถูกปรับเปลี่ยน แต่ไม่ใช่ในวันที่หมดอายุ ประเด็นของ Google คือLast-Modified
ต้องใช้ GET แบบมีเงื่อนไขในขณะที่Expires
อนุญาตให้แคชของเบราว์เซอร์ข้าม GET โดยสิ้นเชิง