Last-Modified
Penggunaan
Header Last-Modified berfungsi sebagai validator lemah untuk permintaan kondisional. Ketika klien menyimpan dalam cache sebuah response yang memuat Last-Modified, klien menyimpan stempel waktu tersebut dan mengirimkan kembali tanggal itu pada header request If-Modified-Since dalam permintaan berikutnya. Server membandingkan tanggal yang tersimpan dengan waktu modifikasi sumber daya saat ini. Jika sumber daya belum berubah, server mengembalikan 304 Not Modified tanpa body. Jika sumber daya telah berubah, server mengirimkan response lengkap yang sudah diperbarui.
Header If-Unmodified-Since menggunakan stempel waktu yang sama untuk pemeriksaan prasyarat pada metode tidak aman seperti PUT dan DELETE, dan mengembalikan 412 Precondition Failed apabila sumber daya telah dimodifikasi sejak tanggal yang diberikan.
Tanggal Last-Modified kurang presisi dibandingkan ETag. Stempel waktu memiliki granularitas satu detik, sehingga perubahan dalam detik yang sama tidak terlihat oleh validasi berbasis tanggal. Header ETag menyediakan validator yang lebih kuat karena terikat pada konten yang persis. Ketika Last-Modified dan ETag sama-sama hadir dalam sebuah response, ETag diprioritaskan selama revalidasi.
Nilai tanggal mengikuti format HTTP-date: nama hari, tanggal dua digit, bulan dalam bentuk singkatan, tahun empat digit, waktu dalam jam, menit, dan detik, diikuti GMT. Formatnya adalah Weekday, DD Mon YYYY HH:MM:SS GMT.
Last-Modified: Fri, 04 Sep 1998 19:15:56 GMT
Catatan
ETag lebih presisi daripada Last-Modified. ETag mendeteksi perubahan apa pun termasuk modifikasi di bawah satu detik, sedangkan Last-Modified memiliki granularitas satu detik. Last-Modified rentan terhadap selisih jam antar-server, sementara ETag yang berbasis hashing konten bersifat portabel di seluruh instance yang berada di balik load balancer. Gunakan kedua header itu bersama-sama demi kompatibilitas maksimum, karena If-None-Match (ETag) lebih diutamakan daripada If-Modified-Since ketika keduanya hadir.
Catatan
Infrastruktur perayapan Google mendukung Last-Modified dan If-Modified-Since sebagaimana didefinisikan oleh standar HTTP Caching. Tanggal pada Last-Modified harus mengikuti format HTTP-date agar tidak menimbulkan masalah parsing. Menyetel bidang max-age pada header response Cache-Control ke perkiraan jumlah detik selama konten diperkirakan tidak berubah membantu crawler menentukan kapan harus merayapi ulang sebuah URL. Sebagai contoh, Cache-Control: max-age=94043.
Contoh
Sebuah response dengan tanggal modifikasi sumber daya. Klien menyimpan stempel waktu ini untuk permintaan kondisional berikutnya.
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
Satu siklus permintaan kondisional yang lengkap. Server mengirimkan Last-Modified pada response awal. Pada permintaan berikutnya, klien mengirimkan kembali stempel waktu itu di If-Modified-Since. Server mengembalikan 304 jika sumber daya belum berubah.
HTTP/1.1 200 OK
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
Cache-Control: max-age=86400
Content-Type: text/html
Permintaan berikutnya:
GET /page HTTP/1.1
If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT
Response server ketika tidak ada perubahan:
HTTP/1.1 304 Not Modified
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
Cache-Control: max-age=86400
Sebuah response yang memadukan Last-Modified dengan ETag. ETag menyediakan validator yang kuat, sementara tanggal modifikasi menjadi cadangan bagi klien yang hanya mendukung validasi berbasis tanggal.
Last-Modified: Fri, 22 Nov 2024 14:30:00 GMT
ETag: "a1b2c3d4"
Cache-Control: max-age=3600
Catatan
Untuk bantuan terkait SEO dan caching, hubungi konsultan SEO mantan Google, Search Brothers.