Saya menguji kode html / js di localhost saya (Windows 7, Chrome v79.0.3945.130 (64-bit)) dan sekitar 50% dari perubahan kode waktu tidak tercermin di browser (saya melihatnya dengan Dev Tools / Sumber) ).
Ada banyak nasihat di internet, tetapi sepertinya tidak ada yang berhasil:
- Klik kanan pada reload dan pilih "Empty cache and Hard reload" - tidak membantu dalam 30% kasus.
- Nonaktifkan cache di tab Jaringan pada Alat Dev Chrome - tidak membantu.
- Tambahkan
<meta http-equiv="Cache-control" content="no-cache">
di header - tidak membantu. - Ganti
<script src="common.js"></script>
dengan<script src="common.js?blabla"></script>
- membantu dalam 60% kasus, tetapi Anda harus melakukannya setelah setiap perubahan adalah tugas besar. Juga, itu tidak berfungsi dengan perubahan html. - Salin file ke file baru (seperti index.html ke index2.html) dan ganti nama file dalam kode - selalu berfungsi, tetapi itu adalah tugas yang lebih besar.
Masalah yang sama persis muncul ketika saya mengkomit kode ke github.io
Tolong bantu saya untuk membuatnya sehingga situs segera mencerminkan perubahan kode.
Sunting: Saya telah membuat file index3.html dan hanya menempatkan "hello world" di sana. Membuka file di browser. Diubah menjadi "hello world2" - browser memperbarui konten. Diubah menjadi "hello world3" - browser masih menampilkan "hello world2" bahkan setelah beberapa kali memuat ulang dan "Empty cache and hard reload". Saya berubah menjadi "hello world4" - browser masih menunjukkan "hello world2". Dalam 4 jam saya berubah menjadi "hello world5" - browser masih menampilkan "hello world2". File ini saya edit dengan notepad dasar.
Edit2: Orang-orang terus bertanya server apa yang saya gunakan. Ini terlihat seperti bagian dari masalah. Sayangnya, saya tidak tahu dan saya juga tidak tahu persis apa yang harus saya lakukan untuk memeriksanya. Inilah semua yang saya temukan sejauh ini:
- Saya memiliki
inetpub/wwwroot
direktori tempat saya meletakkan file html & js dan kemudian buka index.html di browser dihttp://localhost/
. - Panel Network saya di Devs Tools terlihat seperti ini: tautan gambar .
- Pengaturan server sangat cepat dan tidak memerlukan perangkat lunak tambahan untuk menginstal. Yaitu saya tidak menggunakan node.js.
- Ada iisstart.htm di
inetpub/wwwroot
dan ketika saya membukanyahttp://localhost/iisstart.htm
mengatakan IIS7.
sumber
index.html
untuk sesuatu seperti tajukX-Powered-By
atauServer
yang mungkin memberikan petunjuk di server web. Googling untuk jalur file Andainetpub/wwwroot
sangat mengarah ke server IIS.Jawaban:
Menggunakan parameter adalah cara yang benar! Di sini Anda dapat menambahkan nomor versi yang hanya Anda ubah pada perubahan besar secara manual dan untuk debugging Anda dapat mengaturnya ke Date.time () jadi di tag <head> Anda, ini memaksa semua versi yang di-cache untuk ditimpa karena parameter selalu baru satu:
Semoga ini membantu!
sumber
Di server Windows IIS7 berjalan pada Windows 7, untuk mencegah caching konten Anda, Anda perlu membuat beberapa perubahan pada salah satu file konfigurasi Anda yang dipanggil
web.config
. File konfigurasi untuk IIS 7 dan yang lebih baru berlokasi di%WinDir%\System32\Inetsrv\Config folder
tempat%WinDir%
folder tempat Anda menginstal Windows (biasanyaC:/Windows
).Buat salinan cadangan
web.config
file Anda sebelum mengeditnya sehingga Anda dapat mengembalikannya jika perubahan yang Anda buat pada file akan merusaknya.Di
web.config
file Anda , cukup tambahkan berikut ini untuk mencegah caching Andaindex.html
:Dapatkan path file untuk
web.config
file dari sini: Windows Doc: Referensi KonfigurasiMendapat konfigurasi cache di atas dari sini: Cara menonaktifkan caching file HTML aplikasi halaman tunggal yang dilayani melalui IIS?
sumber
projectName/index.html
, yang saya salin dari url di browser sayahttp:/localhost/projectName/index.html
. Hasil - tidak berpengaruh pada masalah caching.web.config
file di folder root situs Anda (folder tempat situs Anda berada) dan mengubah path kembali menjadi adilindex.html
dan melihat apakah itu berfungsi.Saya memiliki masalah yang sama dan ini adalah daftar periksa saya:
<%Response.Expires=1440%>
banyak baris kode ASP dan itu mengatasi semua pengaturan lain! Dalam phpsession_cache_expire
mungkin melakukan hal yang sama.http-equiv="Cache-control"
di header html (Anda lulus tes ini!).Akhirnya saya harus mengatakan bahwa dalam semua situasi di atas, Memeriksa Nonaktifkan cache di tab newtwork di Chrome console selalu berhasil bagi saya untuk melihat versi halaman baru namun ini hanya baik untuk keperluan debugging dan pengunjung tidak akan melakukannya!
sumber
Dalam kasus tertentu dengan menggunakan Google Chrome, coba ini: Buka Alat Dev -> Buka tab 'Jaringan'. Centang kotak 'Nonaktifkan cache', setelah itu segarkan halaman.
Namun, untuk menyebar perubahan ke pengguna Anda, tanpa harus me-refresh halaman, dll, Anda harus menambahkan versi file di akhir setiap file yang direferensikan untuk file yang sering berubah (seperti yang Anda tunjukkan). Sebagai contoh:
The
v=20b379f72a37
ditambahkan ke akhir adalah file hash yang dihasilkan otomatis dari isi file.sumber
Ini kemungkinan besar - tetapi editor / IDE macam apa yang Anda gunakan? Juga, pengeditan seperti apa yang Anda lakukan pada index.html Anda?
Bisakah Anda memberikan beberapa contoh pengeditan yang tidak tercermin ketika Anda menyimpan dan mencoba memuat file?
Saya ingin mencoba mereproduksi masalah Anda. Dari apa yang orang sarankan, tampaknya tidak ada masalah dalam kode itu sendiri. Saya menduga ini adalah masalah lingkungan tetapi saya perlu lebih banyak info dari Anda untuk mengonfirmasi kecurigaan saya.
sumber
Apa yang Anda tulis dalam meta HTML adalah rekomendasi untuk browser, bukan instruksi yang ketat. Jika cache ketat diaktifkan di browser, ini tidak akan membantu.
Solusi dijelaskan dengan baik: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
Saya lebih suka di sisi server untuk menambahkan ke skrip versi dengan tanggal pembaruan terakhir dari file itu sendiri.
Di mana 1579780745150 adalah Unix Timestamp memperbarui file myScript.js itu sendiri. Ini hanya berfungsi dengan file sendiri, tetapi yang eksternal tidak diperlukan. Paling sering dalam nama file adalah versi.
sumber
Ini mungkin sangat frustasi, dan sepertinya Anda tidak melakukan kesalahan.
Masalahnya mungkin ada sesuatu antara browser Anda dan file skrip yang Anda panggil melakukan caching.
Untuk menentukan apa itu, izinkan saya bertanya bagaimana Anda menjelajah ke URL host lokal?
Contoh:
Jika Anda menjalankan
file://path/to/file.html
ini berarti Anda tidak menjelajahi server web / proxy. Jika sudahhttp://[something]/file.html
maka Anda menjalankan beberapa jenis server web dan itu kemungkinan penyebabnya. Cari semacam pengaturan tempat Anda dapat mematikan caching.Jika Anda tidak menggunakan server web dan benar-benar meramban langsung ke file html lokal tanpa server web, maka saya sarankan browser adalah penyebabnya. Jika ini masalahnya, saya sarankan mematikan cache browser seperti yang disarankan Martin Shishkov .
sumber
http://localhost/ProjectName/index.html
Dimana pengaturan ini di mana Anda dapat menonaktifkan caching bisa?file://path/to/projectName/index.html
. Itu akan menghapus server web dari persamaan. Untuk terus menggunakan IIS dan hanya memperbaiki cache, lihat artikel ini: support.microsoft.com/en-us/help/247404/…Chrome melakukan hal ini di mana, jika file tidak terlalu banyak berubah, tidak yakin apa artinya, itu akan menggunakan versi cache "dikompilasi". Untuk html artinya parsed don tree. Untuk kode JS yang dikompilasi, dll.
Biasanya ada cara untuk mengatasi ini, banyak kerangka kerja menggunakan hash di dalam nama file, seperti
main.md5hash.js
:, karena mengubah nama file membatalkan cache.Maka Anda akan ditinggalkan dengan mungkin html tidak memperbarui. Dan untuk lebih jelasnya, saya tidak yakin, Anda selalu dapat menambahkan komentar dengan gumpalan acak ... seperti kencan.
sumber
Berdasarkan pembaruan jawaban Anda, saya akan mengatakan bahwa masalah Anda disebabkan oleh IIS v7 yang menggunakan Memori PC Anda untuk caching bukan Hard drive lokal Anda itu sebabnya
Hard reload
dan semua metode lain tampaknya tidak berfungsi dengan baik.Saya dapat memikirkan 3 solusi:
1. Memperbaiki masalah cache IIS Anda: (Tidak diuji karena saya tidak memiliki PC dengan IIS)
extension
yang ingin Anda nonaktifkan cache yaitu.aspx
, .css, .js dll ... (satu per satu pada saat saya kira?)Sumber Solusi - Baca lebih lanjut tentang IIS 7 Cache
2. Menggunakan beberapa alternatif untuk IIS Ada beberapa tetapi saya akan merekomendasikan (berdasarkan pengalaman saya) WAMP atau XAMPP Keduanya akan memberi Anda pengembangan "lingkungan" yang lebih baik dan keduanya mendukung Windows 7. Juga, jika Anda terbiasa dengan Kode VS Anda hanya dapat menggunakan ekstensi Server Live .
3. Gunakan mode Penyamaran Chrome saat mengembangkan. (Tidak yakin apakah itu berfungsi untuk IIS7)
sumber
.js
file? itu tergantung pada perubahan apa yang Anda lakukan.