วิธีการตั้งค่า Apache 2.2.3 เพื่อส่ง“ แก้ไขล่าสุด” ฯลฯ


9

และบอกเบราว์เซอร์ให้โหลดวัตถุ (และ / หรือหน้า ... ทุกสิ่งบนไซต์) เฉพาะเมื่อมีการแก้ไขตั้งแต่เวลาเยี่ยมชมครั้งสุดท้ายเท่านั้น ??? htaccess, httpd.conf ... คุณมีคำสั่งที่ถูกต้องสำหรับกรณีของฉันหรือไม่? ขอบคุณมาก

คำตอบ:


7

html5boilerplate.comรวมถึงไฟล์. htaccessที่มีความคิดเห็นดีซึ่งมีการตั้งค่ามาตรฐานมากมายที่คุณควรพิจารณา ในหมู่พวกเขามีการตั้งค่าที่เหมาะสมสำหรับการหมดอายุเนื้อหา (หมดอายุ, E-tags, ... )

นี่เป็นเอกสารเกี่ยวกับ mod_expires


5

โปรดทราบว่าLast-Modifiedส่วนหัวเป็นส่วนหัวแคชที่อ่อนแอ การตั้งค่าปัจจุบันคือการใช้Cache-Controlส่วนหัว

Google มีบทความดีๆเกี่ยวกับเรื่องนี้

ปรับการแคชให้เหมาะสม

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

Last-Modified และ ETag สิ่งเหล่านี้ระบุคุณสมบัติบางอย่างเกี่ยวกับทรัพยากรที่เบราว์เซอร์ตรวจสอบเพื่อพิจารณาว่าไฟล์เหมือนกันหรือไม่ ในส่วนหัว Last-Modified จะเป็นวันที่เสมอ ในส่วนหัวของ ETag นี่อาจเป็นค่าใด ๆ ที่ระบุทรัพยากรโดยเฉพาะ (รุ่นของไฟล์หรือเนื้อหาแฮชเป็นเรื่องปกติ) Last-Modified เป็นส่วนหัวแคช "อ่อน" ที่เบราว์เซอร์ใช้การวิเคราะห์พฤติกรรมเพื่อกำหนดว่าจะดึงรายการจากแคชหรือไม่ (ฮิวริสติกแตกต่างกันในเบราว์เซอร์ที่ต่างกัน) อย่างไรก็ตามส่วนหัวเหล่านี้อนุญาตให้เบราว์เซอร์อัปเดตทรัพยากรแคชอย่างมีประสิทธิภาพโดยการออกคำขอ GET แบบมีเงื่อนไขตามเงื่อนไขเมื่อผู้ใช้โหลดหน้าซ้ำ GET แบบมีเงื่อนไขจะไม่ส่งคืนการตอบกลับแบบเต็มเว้นแต่ว่าทรัพยากรได้มีการเปลี่ยนแปลงที่เซิร์ฟเวอร์และทำให้เวลาแฝงต่ำกว่า GET แบบเต็ม

ฉันขอแนะนำให้ใช้อย่างใดอย่างหนึ่งCache-ControlหรือExpiresส่วนหัวตามความจำเป็นเนื่องจากพวกเขาเป็นส่วนหัวแคชที่แข็งแกร่ง ระบบบางระบบจะไม่สนใจวันที่แก้ไขครั้งล่าสุด

จากนั้นคุณสามารถใช้เครื่องมือเช่นcurlหรือhttp://redbot.orgเพื่อตรวจสอบส่วนหัว


2
FWIW: "อ่อนแอ" เป็นสิ่งที่ Google สร้างขึ้น Expiresเป็นส่วนหัวที่ไม่เหมาะสมทั้งหมดสำหรับทรัพยากรที่ไม่หมดอายุ ทรัพยากรบางอย่างอาจถูกปรับเปลี่ยน แต่ไม่ใช่ในวันที่หมดอายุ ประเด็นของ Google คือLast-Modifiedต้องใช้ GET แบบมีเงื่อนไขในขณะที่Expiresอนุญาตให้แคชของเบราว์เซอร์ข้าม GET โดยสิ้นเชิง
Dancrumb

1
คำที่อ่อนแอเป็นเพียงความหมาย ประเด็นก็คือการใช้Last-Modifiedส่วนหัวในกรณีที่ไม่มีคำแนะนำในการแคชอื่น ๆ จะทำให้ระยะเวลาแคชถึงไคลเอ็นต์ HTTP หากทรัพยากรไม่ได้รับการแก้ไขตั้งแต่Last-Modifiedวันที่ควรพิจารณาทรัพยากรใหม่ ในทางตรงกันข้ามเมื่อใช้ExpiresหรือCache-Controlส่วนหัวที่มาสามารถกำหนดช่วงเวลาความสดใหม่อย่างชัดเจน
jeffatrackaid

1
"อ่อนแอ" v "แข็งแรง" ถูกกำหนดไว้ที่tools.ietf.org/html/rfc7232#section-2.1 (หมายเหตุถึง @Dancrumb)
John Bentley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.