Sesuai dengan Praktik Terbaik Yahoo untuk Mempercepat Situs Anda , kami menayangkan konten statis dari CDN menggunakan header kedaluwarsa cache yang jauh di masa depan. Tentu saja, kita kadang-kadang perlu memperbarui file "statis" ini, jadi saat ini kami menambahkan versi infiks sebagai bagian dari nama file (berdasarkan jumlah SHA1 dari isi file). Demikian:
styles.min.css
Menjadi:
styles.min.abcd1234.css
Namun, mengelola file berversi dapat menjadi membosankan, dan saya bertanya-tanya apakah notasi argumen GET mungkin lebih bersih dan lebih baik:
styles.min.css?v=abcd1234
Yang mana yang Anda gunakan, dan mengapa? Apakah ada pertimbangan terkait peramban atau proxy / cache yang harus saya pertimbangkan?
static-content
cache-control
David Eyk
sumber
sumber
Jawaban:
Menurut Google Make the Web Faster , halaman dengan parameter kueri tidak di-cache oleh banyak proxy HTTP.
Jadi
styles.min.abcd1234.css
adalah solusi yang disukai. Anda dapat menggunakan mekanisme penulisan ulang URL yang sesuai untuk berubahstyles.min.abcd1234.css
menjadi lebih mudah diterapkan secarastyles.min.css?v=abcd1234
transparan.Jika Anda hanya mendukung HTTPS, saran itu tidak berlaku, karena proxy biasanya tidak dapat men-cache halaman yang disajikan melalui SSL.
sumber
Menggunakan versi gaya GET, dari cache kosong banyak URL - misalnya
style.css?v=123
danstyle.css?v=456
- akan mengembalikan konten yang sama. Namun saya tidak dapat melihat ini akan bermasalah, terutama karena Anda hanya akan menautkannya satu per satu.Saya pikir Anda akan menemukan gaya GET jauh lebih mudah untuk dipertahankan. Anda tidak perlu file terpisah: cukup ubah URL dan browser akan mengambil CSS lagi.
PEMBARUAN: pada penelitian lebih lanjut tampaknya menggunakan string kueri dapat menghentikan peramban yang menyalin file. Namun, jika Anda mengembalikan tajuk yang tepat seperti
Expires
ini bukan masalah.UPDATE 2: jawaban yang diterima menunjukkan bahwa beberapa proksi tidak men-cache file dengan string kueri. Namun ini didasarkan pada informasi lama; masalah khusus yang mereka sebutkan di Squid diperbaiki 7 tahun yang lalu. Web yang mengesankan melakukan penulisan yang bagus tentang hal ini.
sumber
Keduanya akan berfungsi sama baiknya karena string kueri dianggap sebagai bagian dari URL dan dengan mengubahnya Anda akan mengubah nama sumber daya sehingga menyebabkan browser mengambil salinan baru file tersebut.
Saya katakan gunakan metode mana saja yang lebih mudah untuk Anda pertahankan.
sumber
ini bukan jawaban untuk pertanyaan di atas , saya ingin solusi yang lebih baik jadi saya bertanya di sini sendiri
Kedua metode akan memerlukan modifikasi pada file di mana file css dan js dirujuk. Jadi efeknya akan membutuhkan restart server aplikasi setelah melakukan perubahan.
Apakah ada cara yang lebih baik, di mana versi file statis dapat ditangani tanpa harus me-restart server Aplikasi?
berikut ini dikesampingkan dalam solusi
solusinya juga seharusnya tidak mempengaruhi pengaturan kontrol-cache atau kedaluwarsa.
Terima kasih
sumber