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.

GollyJer
sumber

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.

Jesper M
sumber
0

Pastikan Anda mengatur tajuk kedaluwarsa yang tepat. Jika Anda menaruh waktu di masa lalu, konten tidak akan di-cache. Periksa waktu / tanggal di workstation tempat IS9 berjalan. Lihat juga: http://www.mnot.net/cache_docs/

Mircea Vutcovici
sumber
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.

JeffG
sumber
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.

JeffG
sumber
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.

Richard
sumber
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