Apakah ada cara untuk mematikan cache browser klien untuk situs web tertentu?


10

Ini adalah pertanyaan agnostik peramban tetapi kami sedang menguji dengan IE9.

Salah satu aplikasi web yang dikunjungi pengguna kami di-cache secara acak dan perubahan tidak muncul ketika seharusnya. Tidak ada situs lain yang memiliki masalah ini dan kami telah bekerja dengan vendor yang mengklaim itu tidak terjadi pada orang lain. Jika kami menggunakan bilah alat pengembang dan memilih "paksa menyegarkan dari server" semuanya diperbarui dengan benar.

Alih-alih benar-benar menyelesaikan masalah, pemikiran kami adalah mengatasinya dengan menonaktifkan cache untuk situs spesifik ini. Namun, kami tidak tahu caranya.

Jawaban:


10

Satu-satunya cara yang tepat untuk menonaktifkan cache browser adalah dengan tajuk HTTP dari webapp itu sendiri. Header HTTP 1.1 "Cache-Control" saja sudah cukup untuk semua browser pasca-tahun-2000. Tetapi untuk perlindungan tambahan, server dapat memancarkan header HTTP 1.1 "Cache-Control" dan HTTP 1.0 "Expires" bersamaan .

Sebuah cara hack'ish tetapi kadang-kadang terlihat untuk menangani pembatalan cache adalah string "cachebuster" di URL dari server. Cachebuster sering berbasis timestamp, dan ditambahkan sebagai querystring ke setiap LINK HTML untuk membuat URL unik dan hanya digunakan sekali. Sesuatu seperti http://example.org/filename.html?cb=<timestamp+random_value>. Ini jelek, dan tidak melakukan apa-apa header HTTP tidak melakukan jauh lebih baik. Tapi itu bisa digunakan sebagai peretasan untuk audiens terbatas (fx pada Intranet), atau sebagai lapisan perlindungan tambahan bersama dengan header HTTP yang tepat.

AFAIK tidak ada cara untuk menonaktifkan caching secara selektif untuk satu situs saja dari dalam Internet Explorer. Satu (rumit berdarah) solusi bisa dengan menginstal cache Varnish sebagai cache perantara pada LAN Anda, mengatur Internet Explorer untuk menggunakan Varnish sebagai proxy HTTP, dan menggunakan bahasa VCL pada Varnish untuk menulis kembali header HTTP untuk situs spesifik ini saja.

Sejujurnya, saya pikir vendor Anda membuat kesalahan di sini. Saya akan menyarankan untuk menginstal Fiddler2 untuk IE , atau Firebug untuk Firefox , dan melihat header HTTP yang sebenarnya dikirim webapp. Korelasikan hal itu dengan tutorial caching Mark Nottingham yang sudah saya tautkan di atas - Saya kira header mengizinkan caching, atau setidaknya tidak secara tegas melarang caching.



0

Jika Anda tidak dapat mengubah konten situs web yang dipermasalahkan, Anda dapat menggunakan server proxy untuk memodifikasi konten enroute ke browser Anda. Ini akan memungkinkan Anda untuk mengubah tajuk yang kedaluwarsa.


0

Jika situs web memungkinkan Anda terhubung melalui HTTPS, maka tergantung pada browser Anda, Anda dapat menonaktifkan caching halaman terenkripsi.

Di IE, ini dapat dilakukan dengan demikian:

Anda dapat mengecek pengaturan IE di Internet Options-> Advanced-> Security-> Jangan menyimpan halaman terenkripsi ke disk.


Dia meminta solusi agnostik browser.
Mircea Vutcovici

1
@ Mircea Ini adalah solusi agnostik browser. Saya baru saja memberikan contoh gratis menggunakan IE. Banyak browser lain memiliki opsi untuk menonaktifkan caching SSL, tetapi pengaturannya ada di tempat yang berbeda.
JeffG

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Anda mungkin ingin mempertimbangkan untuk menggunakan kunci acak di bilah URL, ini juga akan mencegah caching di dalam browser.


Ini akan berhasil, JIKA GollyJer memiliki kemampuan untuk memodifikasi situs web. Saya tahu dia tidak berdasarkan pertanyaannya.
JeffG

Untuk lebih tepatnya, "kunci acak" tidak secara efektif mencegah caching. Peramban dan di antara cache masih dapat menyimpan respons pada disk. Tapi lain kali file yang sama diminta, kunci acak akan membuat URL berbeda, dan dengan demikian versi cache di-disk tidak akan digunakan. Representasi baru akan diunduh dari server, dan mungkin di-cache ke disk. Selain itu, tag META PRAGMA sudah tua dan tidak boleh digunakan - rekomendasinya adalah dengan menggunakan HTTP Expires dan header Cache-Control.
Jesper M
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.