Cara mengatur Apache 2.2.3 untuk mengirim "modifikasi terakhir" dll

9

dan memberitahu browser untuk memuat ulang objek (dan / atau halaman ... semua yang ada di situs) hanya jika telah dimodifikasi sejak waktu kunjungan terakhir ??? htaccess, httpd.conf ... sudahkah Anda siap direktif untuk kasus saya? Terima kasih banyak

smepie
sumber

Jawaban:

5

Perhatikan bahwa Last-Modifiedheader adalah header cache yang lemah. Preferensi saat ini adalah menggunakan Cache-Controlheader.

Google memiliki artikel bagus tentang ini.

Optimalkan Caching

Kedaluwarsa dan Kontrol Tembolok: maks-usia. Ini menentukan "masa hidup kesegaran" dari suatu sumber daya, yaitu periode waktu di mana browser dapat menggunakan sumber daya yang di-cache tanpa memeriksa untuk melihat apakah versi baru tersedia dari server web. Mereka adalah "caching header yang kuat" yang berlaku tanpa syarat; yaitu, setelah diatur dan sumber daya diunduh, browser tidak akan mengeluarkan permintaan GET untuk sumber daya sampai tanggal kedaluwarsa atau usia maksimum tercapai.

Terakhir Dimodifikasi dan ETag. Ini menentukan beberapa karakteristik tentang sumber daya yang diperiksa browser untuk menentukan apakah file-file itu sama. Di tajuk yang Terakhir Dimodifikasi, ini selalu berupa tanggal. Di header ETag, ini bisa berupa nilai apa pun yang secara unik mengidentifikasi sumber daya (versi file atau hash konten adalah tipikal). Terakhir Dimodifikasi adalah header caching "lemah" karena browser menerapkan heuristik untuk menentukan apakah akan mengambil item dari cache atau tidak. (Heuristik berbeda di antara peramban yang berbeda.) Namun, tajuk ini memungkinkan peramban untuk memperbarui sumber daya yang di-cache secara efisien dengan mengeluarkan permintaan GET bersyarat saat pengguna secara eksplisit memuat ulang halaman. GET bersyarat tidak mengembalikan respons penuh kecuali jika sumber daya telah berubah di server, dan karenanya memiliki latensi lebih rendah daripada GET penuh.

Saya sarankan menggunakan salah satu Cache-Controlatau Expiresheader sesuai kebutuhan karena mereka adalah header cache yang kuat. Beberapa sistem akan mengabaikan tanggal Modifikasi Terakhir.

Anda kemudian dapat menggunakan alat seperti curlatau http://redbot.org untuk memeriksa header.

jeffatrackaid
sumber
2
FWIW: "lemah" adalah sesuatu yang dibuat Google. Expiresadalah tajuk yang sama sekali tidak pantas untuk sumber daya yang tidak kedaluwarsa. Beberapa sumber daya dapat dimodifikasi, tetapi tidak pada tanggal kedaluwarsa. Poin Google adalah yang Last-Modifiedmembutuhkan GET bersyarat, sedangkan Expiresmemungkinkan cache browser untuk melewati GET sama sekali.
Dancrumb
1
Istilah lemah hanyalah semantik. Intinya adalah bahwa menggunakan Last-Modifiedheader dengan tidak adanya instruksi caching lainnya meninggalkan periode cache hingga ke klien HTTP. Jika sumber daya belum dimodifikasi sejak Last-Modifiedtanggal, sumber daya harus dianggap segar. Sebaliknya, saat menggunakan Expiresatau Cache-Controltajuk asalnya dapat menetapkan periode kesegaran eksplisit.
jeffatrackaid
1
"lemah" v "kuat" didefinisikan di tools.ietf.org/html/rfc7232#section-2.1 (Catatan juga untuk @Dancrumb)
John Bentley