Pertanyaan Header kontrol cache HTTP yang ideal untuk berbagai jenis sumber daya


Saya ingin mencari header minimal, yang berfungsi dengan "semua" cache dan browser (juga saat menggunakan HTTPS!)

Di situs web saya, saya akan memiliki tiga jenis sumber daya:

(1) Foreable cacheable (publik / sama untuk semua pengguna)

Contoh: 0A470E87CC58EE133616F402B5DDFE1C.cache.html (otomatis dihasilkan oleh GWT) 

  • File-file ini secara otomatis diberi nama baru, ketika mereka mengubah konten (berdasarkan MD5).

  • Mereka harus mendapatkan cache sebanyak mungkin, bahkan ketika menggunakan HTTPS (jadi saya berasumsi, saya harus mengaturnya Cache-Control: public, terutama untuk Firefox?)

  • Mereka seharusnya tidak mengharuskan klien untuk melakukan perjalanan bolak-balik ke server untuk memvalidasi, jika konten telah berubah.

(2) Mengubah sesekali (publik / sama untuk semua pengguna)

Contoh: index.html, mymodule.nocache.js

  • File-file ini mengubah konten mereka tanpa mengubah URL, ketika versi baru dari situs dikerahkan.

  • Mereka dapat di-cache, tetapi mungkin perlu perjalanan pulang-pergi untuk divalidasi kembali setiap waktu.

(3) Individu untuk setiap permintaan (khusus / pribadi pengguna)

Contoh: tanggapan JSON

  • Sumber daya ini tidak boleh di-cache tidak dienkripsi ke disk dalam keadaan apa pun. (Kecuali mungkin saya akan memiliki beberapa permintaan khusus yang bisa di-cache.)

Saya memiliki gagasan umum tentang header mana yang mungkin saya gunakan untuk setiap jenis, tetapi selalu ada sesuatu yang saya dapat hilang.


76
2018-06-04 01:23


asal


Jawaban:


Saya mungkin akan menggunakan pengaturan ini:

  1. Cache-Control: max-age=31556926 - Representasi dapat di-cache oleh cache apa pun. Representasi yang di-cache dianggap baru selama 1 tahun:

    Untuk menandai tanggapan sebagai "tidak pernah kedaluwarsa," server asal mengirim    Kedaluwarsa tanggal kurang lebih satu tahun dari waktu responsnya   terkirim. Server HTTP / 1.1 SEHARUSNYA TIDAK dikirim Kedaluwarsa tanggal lebih dari satu   tahun di masa depan.

  2. Cache-Control: no-cache - Representasi diizinkan untuk di-cache oleh cache apa pun. Tetapi cache harus mengirimkan permintaan ke server asal untuk validasi sebelum merilis salinan cache.
  3. Cache-Control: no-store - Cache tidak boleh men-cache representasi dalam kondisi apa pun.

Lihat Tandai Nottingham Tutorial Caching untuk informasi lebih lanjut.


83
2018-06-08 21:49



Kasus satu dan dua sebenarnya skenario yang sama. Anda harus mengatur Cache-Control: public lalu buat URL dengan menyertakan nomor versi / situs tersebut sehingga Anda memiliki sumber daya tak berubah yang berpotensi bertahan selamanya. Anda juga ingin mengatur Expires tajuk satu tahun atau lebih di masa mendatang sehingga klien tidak perlu mengeluarkan pemeriksaan kesegaran.

Untuk kasus 3, Anda dapat semua hal berikut untuk fleksibilitas maksimum:

"Cache-Control", "no-cache, must-revalidate"
"Expires", 0
"Pragma", "no-cache"

-2
2018-06-08 01:36