Apa yang bisa menjadi perbedaan antara jika-diubah-sejak dan jika-tidak ada-cocok? Saya merasa jika-tidak ada-cocok digunakan untuk file sedangkan jika-diubah-sejak digunakan untuk halaman?
89
Mengenai perbedaan antara Last-Modified/If-Modified-Since
dan ETag/If-None-Match
:
Keduanya dapat digunakan secara bergantian. Namun, bergantung pada jenis sumber daya, dan bagaimana sumber daya dibuat di server, satu atau pertanyaan lain ("apakah ini telah diubah sejak ...?" / "Apakah ini masih cocok dengan ETag ini?") Mungkin lebih mudah dijawab .
Contoh:
mtime
sebagai Last-Modified
tanggal adalah solusi paling sederhana.ETag
akan jauh lebih mudah. Lihat tautan berikut untuk detail lebih lanjut tentang topik:
If-Modified-Since
dibandingkan denganLast-Modified
sedangkanIf-None-Match
dibandingkan denganETag
. KeduanyaModified-Since
danETag
dapat digunakan untuk mengidentifikasi varian spesifik dari sebuah resource.Tetapi perbandingan
If-Modified-Since
untukLast-Modified
memberi Anda informasi apakah varian yang di-cache lebih lama atau lebih baru sedangkan perbandinganIf-None-Match
untukETag
hanya memberi Anda informasi apakah keduanya identik atau tidak. Selain itu, sebagian besarETag
generator menyertakan informasi dari inode khusus sistem sehingga memindahkan file ke drive yang berbeda juga dapat mengubahETag
.sumber
Nilai stempel waktu yang digunakan dalam Last-Modified / If-Modified-Because memiliki ketepatan yang terbatas - satu detik dan itu tidak cukup untuk mengubah konten dengan cepat seperti, misalnya, aplikasi obrolan web di mana lebih dari satu pesan dapat diposting pada detik tertentu . ETag / If-None-Match dapat membantu memecahkan masalah itu.
sumber
Seperti yang dinyatakan dalam praktik terbaik Google:
https://developers.google.com/speed/docs/best-practices/caching
sumber
Last-Modified
denganETag
(atau, di sisi agen pengguna,If-Modified-Since
denganIf-None-Match
) disebutkan. Demikian pula spesifikasi W3 tidak membatasi Anda. Dikatakan untuk tidak digunakanIf-Modified-Since
denganIf-Match
, tetapi saya berasumsi itu karena kumpulan dokumen yang memiliki tanggal diperbarui tetapi konten yang sama seperti yang ditentukan oleh ETag harus cukup kecil.Jika-Dimodifikasi-Sejak menggunakan tanggal, sedangkan If-None-Match menggunakan ETag . Keduanya dapat digunakan untuk "halaman" (yaitu HTML) dan file lainnya.
sumber
Kecuali dinyatakan lemah oleh server, ETag dianggap sebagai validator yang kuat, dan karenanya dapat digunakan untuk memenuhi permintaan rentang bersyarat. Namun, sebagian besar ETag yang dibuat secara otomatis menunjukkan kesulitan dalam situasi server farm, karena mereka sering menggunakan informasi inode dan / atau penghitung persisten unik. Dalam praktiknya, saya telah menemukan tajuk Last Modified cukup untuk konten yang cukup statis, misalnya menyajikan konten statis yang dilindungi, karena waktu penulisan file menjadi validator yang cukup baik.
ETag sejauh ini adalah yang paling fleksibel. Klien yang sesuai diharuskan untuk mengirim ETag dalam permintaan bersyarat, sedangkan mereka HARUS mengirim keduanya jika tersedia.
sumber
Header Jika-Dimodifikasi-Sejak digunakan untuk menentukan waktu saat browser terakhir menerima sumber daya yang diminta. Header If-None-Match digunakan untuk menentukan tag entitas yang dikeluarkan server dengan sumber daya yang diminta saat terakhir kali diterima.
Dalam dua cara yang dijelaskan, header ini digunakan untuk mendukung caching konten dalam browser, dan mereka memungkinkan server untuk menginstruksikan browser untuk menggunakan salinan sumber daya yang di-cache, daripada merespons dengan konten penuh dari sumber daya jika ini adalah tidak perlu.
sumber