apa perbedaan antara Kedaluwarsa dan header Kontrol-Cache?

Jawaban:

130

Cache-Controldiperkenalkan di HTTP / 1.1 dan menawarkan lebih banyak opsi daripada Expires. Mereka dapat digunakan untuk mencapai hal yang sama tetapi nilai data untuk Expiresadalah tanggal HTTP sedangkan Cache-Controlusia maks memungkinkan Anda menentukan jumlah waktu relatif sehingga Anda dapat menentukan "X jam setelah halaman diminta".

Kontrol Cache HTML adalah pertanyaan yang sangat mirip dan memiliki tautan yang baik ke tutorial caching yang seharusnya menjawab sebagian besar pertanyaan Anda (mis., Http://www.mnot.net/cache_docs/#EXPIRES ). Singkatnya, Expiresdirekomendasikan untuk sumber daya statis seperti gambar dan Cache-Controlketika Anda membutuhkan lebih banyak kontrol atas bagaimana cache dilakukan.

A Lee
sumber
8
Layak dikomentari bahwa kontrol-cache adalah apa yang akan digunakan oleh semua browser, tetapi sangat berguna untuk menentukan kedua header jika-kalau ada proxy lama di jalan.
Nacho Coloma
3
Gunakan layanan redbot.org (juga oleh Mark Nottingham , yang telah menulis artikel caching yang dirujuk dalam jawaban di atas) untuk memeriksa penggunaan header caching yang benar.
daxim
35
Lebih lanjut: "Ketika Kontrol-Cache dan Kedaluwarsa hadir, Kontrol-Cache diutamakan." - mnot.net/cache_docs/
KFunk
35

Jika Anda menggunakan CDN (Cloud Delivery Network), saya sarankan untuk menggunakan Kontrol Cache dengan waktu maksimum dalam detik. Misalnya Kontrol-Cache: max-age = 604800. Ini mencegah puncak permintaan ke server asal Anda: Dengan "Kedaluwarsa Rab, 30 Okt 20xx 04:37:07 GMT" semua browser akan meminta Anda secara bersamaan.

pengguna3241258
sumber
22
Apache (dan mungkin banyak server) biasanya menetapkan tanggal kedaluwarsa menggunakan waktu saat file diminta + batas waktu yang Anda tentukan. Karena tanggal ini menggunakan detik, skenario Anda sangat tidak mungkin dan perilakunya sama dengan cache-control. Jadi saya tidak melihat mengapa akan ada permintaan puncak saat menggunakanExpires:
hilnius
19

Menurut artikel Google Developers ini, Caching HTTP :

Header Cache-Control didefinisikan sebagai bagian dari spesifikasi HTTP / 1.1 dan menggantikan header sebelumnya (misalnya Kedaluwarsa) yang digunakan untuk menentukan kebijakan caching respons. Semua browser modern mendukung Kontrol-Cache, maka hanya itu yang kita butuhkan.

Paul
sumber
Tidak hanya semua peramban modern mendukungnya - mereka juga harus, seperti dalam spesifikasi: "Jika sebuah respons menyertakan tajuk Kedaluwarsa dan arahan usia-max, arahan usia-max menimpa header Kedaluwarsa, bahkan jika Kedaluwarsa header lebih membatasi "[ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk
8

Kontrol Cache didefinisikan dalam HTTP / 1.1, memberi tahu semua mekanisme caching dari server ke klien apakah mereka dapat melakukan cache objek ini. Hal ini diukur dalam detik: Cache-Control: max-age=3600.

Bidang Expirestajuk memberikan tanggal / waktu setelah respons dianggap basi. Kedaluwarsa nilai adalah timestamp HTTP-date: Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Jika respons menyertakan Cache-Controlbidang dengan max-agearahan, penerima harus HARUS mengabaikan Expiresbidang tersebut.

simpuljh
sumber
4

Heroku devcenter memiliki artikel yang bagus tentang hal ini.

Mengutip dari itu,

Sementara tajuk Kontrol-Cache mengaktifkan caching sisi-klien dan menetapkan usia maksimum sumber daya, tajuk Kedaluwarsa digunakan untuk menentukan titik tertentu saat sumber daya tidak lagi valid.

Devi
sumber
0

Kecuali untuk opsi pribadi / publik CC, saya tidak dapat melihat perbedaan. Saat menggunakan Kedaluwarsa seperti "akses plus 1 tahun / bulan / minggu / hari", ia bekerja dengan cara yang persis sama seperti CC.

rampok
sumber
Maukah Anda menjelaskan downvote? Saya melakukan beberapa pengujian ekstensif di Chrome, Safari, dan Firefox. Kontrol Cache memiliki beberapa opsi yang tidak tersedia saat menggunakan kedaluwarsa, tetapi untuk semua tujuan praktis, keduanya bekerja dengan cara yang persis sama.
Rob
-1

Jika Anda masih tertarik, saya meninggalkan rekomendasi ini langsung dari anak laki-laki google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Mereka lebih suka Kedaluwarsa sebelum daripada Kontrol-Cache

sinar
sumber
Apakah Anda yakin mereka lebih memilih Kedaluwarsa daripada Kontrol Cache? Saya membaca override sebaliknya, setidaknya untuk Firefox. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00
Saat ini, halaman itu menyebutkan "Sudah usang. Halaman ini ditulis untuk versi 4 dari PageSpeed ​​Insights API, yang sudah usang dan akan ditutup pada Mei 2019. Versi 5 adalah yang terbaru dan menyediakan data dunia nyata dari Pengalaman Pengguna Chrome. Laporkan dan data laboratorium dari Lighthouse. "
Jochem Schulenklopper