Bagaimana cara menghapus cache browser dengan JavaScript?
Kami menyebarkan kode JavaScript terbaru tetapi kami tidak dapat memperoleh kode JavaScript terbaru.
Catatan Editorial: Pertanyaan ini semi-duplikat di tempat-tempat berikut, dan jawaban di pertanyaan pertama dari berikut mungkin adalah yang terbaik. Jawaban yang diterima ini bukan lagi solusi ideal.
Bagaimana cara memaksa browser untuk memuat ulang file CSS / JS yang di-cache?
Bagaimana saya bisa memaksa klien untuk me-refresh file JavaScript?
javascript
caching
Dylan Brams
sumber
sumber
?version=xxx
file JS terkait Anda melalui langkah membangun. Setiap build baru akan meminta versi baru dari file JS.Jawaban:
Anda dapat memanggil window.location.reload (true) untuk memuat ulang halaman saat ini. Ini akan mengabaikan item yang di-cache dan mengambil salinan baru halaman, css, gambar, JavaScript, dll dari server. Ini tidak menghapus seluruh cache, tetapi memiliki efek membersihkan cache untuk halaman yang Anda buka.
Namun, strategi terbaik Anda adalah versi jalan atau nama file seperti yang disebutkan dalam berbagai jawaban lainnya. Selain itu, lihat Revving Filenames: jangan gunakan querystring karena alasan tidak digunakan
?v=n
sebagai skema versi Anda.sumber
Anda tidak dapat menghapus cache dengan javascript. Cara yang umum adalah menambahkan nomor revisi atau cap waktu terakhir ke file, seperti ini:
atau
myscript.js?updated=1234567890
sumber
Coba ubah src file JavaScript? Dari ini:
Untuk ini:
Metode ini harus memaksa browser Anda untuk memuat salinan baru file JS.
sumber
Selain caching setiap jam, atau setiap minggu, Anda dapat melakukan cache sesuai dengan data file.
Contoh (dalam PHP):
atau bahkan menggunakan waktu modifikasi file:
sumber
Anda juga dapat memaksa kode untuk dimuat ulang setiap jam, seperti ini, di PHP:
atau
sumber
letakkan ini di akhir templat Anda:
sumber
coba gunakan ini
Untuk ini:
sumber
Berikut cuplikan dari apa yang saya gunakan untuk proyek terbaru saya.
Dari pengontrol:
Dari tampilan:
Proses penerbitan kami menghasilkan file dengan nomor revisi dari bangunan saat ini. Ini berfungsi dengan URL yang menyandikan file itu dan menggunakannya sebagai cache buster. Sebagai kegagalan, jika file itu tidak ada, nomor tahun dan minggu digunakan agar cache masih berfungsi, dan itu akan di-refresh setidaknya seminggu sekali.
Juga, ini menyediakan penghilang cache untuk setiap pemuatan halaman saat berada dalam lingkungan pengembangan sehingga pengembang tidak perlu khawatir dengan membersihkan cache untuk sumber daya apa pun (javascript, css, panggilan ajax, dll).
sumber
atau Anda bisa membaca file js oleh server dengan file_get_contets dan kemudian memasukkan gema di header isi js
sumber
Mungkin "membersihkan cache" tidak semudah yang seharusnya. Alih-alih membersihkan cache pada browser saya, saya menyadari bahwa "menyentuh" file tersebut sebenarnya akan mengubah tanggal file sumber di-cache di server (Diuji pada Edge, Chrome dan Firefox) dan sebagian besar browser secara otomatis akan mengunduh salinan terbaru dari apa yang ada di server Anda (kode, grafik juga multimedia apa pun). Saya sarankan Anda hanya menyalin skrip terkini di server dan solusi "melakukan hal sentuh" sebelum program Anda berjalan, sehingga itu akan mengubah tanggal semua file masalah Anda ke tanggal dan waktu terbaru, kemudian mengunduh salinan baru ke browser Anda:
... sisa program Anda ...
Butuh beberapa waktu untuk menyelesaikan masalah ini (karena banyak browser bertindak berbeda untuk perintah yang berbeda, tetapi mereka semua memeriksa waktu file dan membandingkannya dengan salinan yang Anda unduh di browser Anda, jika tanggal dan waktu yang berbeda, akan melakukan penyegaran), Jika Anda tidak bisa berjalan dengan cara yang benar, selalu ada solusi lain yang dapat digunakan dan lebih baik untuk itu. Salam hangat dan selamat berkemah.
sumber
Saya punya beberapa masalah dengan kode yang disarankan oleh yboussard. Loop dalam tidak bekerja. Berikut adalah kode yang dimodifikasi yang saya gunakan dengan sukses.
sumber
Jika Anda menggunakan php dapat melakukan:
sumber
Cache.delete () dapat digunakan untuk chrome, firefox dan opera baru.
sumber
You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
Tolong jangan memberikan informasi yang salah. Cache api adalah jenis cache yang berbeda dari cache http
Tembolok HTTP dipecat ketika server mengirim tajuk yang benar , Anda tidak dapat mengakses dengan javasvipt.
Cache api di sisi lain ditembakkan saat Anda inginkan, ini berguna saat bekerja dengan pekerja layanan sehingga Anda dapat memotong permintaan dan menjawabnya dari jenis cache ini, lihat: ilustrasi 1 ilustrasi 2 saja
Anda bisa menggunakan teknik ini untuk selalu memiliki konten baru pada pengguna Anda:
Saya akan merekomendasikan yang ketiga lihat
sumber
Anda juga dapat menonaktifkan caching peramban dengan tag meta HTML, cukup taruh tag html di bagian kepala untuk menghindari halaman web di-cache saat Anda melakukan pengkodean / pengujian dan ketika Anda selesai, Anda dapat menghapus meta tag.
(di bagian kepala)
Refresh halaman Anda setelah menempelkan ini di kepala dan harus menyegarkan kode javascript baru juga.
Tautan ini akan memberi Anda opsi lain jika Anda memerlukannya http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/
atau Anda bisa membuat tombol seperti itu
itu menyegarkan dan menghindari caching tetapi itu akan ada di halaman Anda sampai Anda menyelesaikan pengujian, maka Anda bisa melepasnya. Opsi kepalan adalah yang terbaik.
sumber
Saya cenderung untuk versi kerangka kerja saya kemudian menerapkan nomor versi ke jalur skrip dan gaya
sumber
tutup dan buka browser setelah menjalankan kode di konsol.
sumber
window.location.reload(true)
tampaknya telah ditinggalkan oleh standar HTML5. Salah satu cara untuk melakukan ini tanpa menggunakan string kueri adalah dengan menggunakanClear-Site-Data
header , yang tampaknya menjadi standar .sumber
Karena cache browser tautan yang sama, Anda harus menambahkan nomor acak ujung url.
new Date().getTime()
menghasilkan angka yang berbeda.Cukup tambahkan
new Date().getTime()
ujung tautan seperti panggilanKeluaran:
https://stackoverflow.com/questions.php?1571737901173
sumber