ローカルホスト(Windows 7、Chrome v79.0.3945.130(64-bit))でhtml/jsコードをテストし、コード変更の約50%がブラウザーに反映されない(私はDev Tools/Sourcesでそれを見る)。
インターネットにはたくさんのアドバイスがありますが、どちらもうまくいかないようです:
<meta http-equiv="Cache-control" content="no-cache">
を追加-役に立たない。<script src="common.js"></script>
を<script src="common.js?blabla"></script>
に置き換えます-ケースの60%で役立ちますが、すべての変更が非常に面倒な場合は、必ず行う必要があります。また、htmlの変更には対応していません。コードをgithub.ioにコミットするときに発生するまったく同じ問題
サイトにコードの変更がすぐに反映されるようにしてください。
編集:index3.htmlファイルを作成し、「hello world」のみを配置しました。ブラウザでファイルを開きました。 「hello world2」に変更-ブラウザがコンテンツを更新しました。 「hello world3」に変更されました-複数のリロードおよび「キャッシュとハードリロードを空にした」後でも、ブラウザはまだ「hello world2」を表示していました。私は「hello world4」に変更しました-ブラウザはまだ「hello world2」を示していました。 4時間後、私は「hello world5」に変更しました-ブラウザーにはまだ「hello world2」が表示されています。このファイルは、基本的なメモ帳で編集しました。
Edit2:人々は私が使用しているサーバーを尋ね続けます。これは問題の一部のようです。残念ながら、私はそれを確認するために私が正確に何をする必要があるのかわかりません。ここに私がこれまでに見つけたすべてがあります:
inetpub/wwwroot
ディレクトリにhtmlとjsファイルを置き、index.htmlをブラウザーのhttp://localhost/
で開きます。inetpub/wwwroot
にiisstart.htmがあり、http://localhost/iisstart.htm
を開くとIIS7と表示されています。パラメータの使用は正しい方法です!ここでは、大きな変更でのみ変更するバージョン番号を手動で追加できます。デバッグの場合は、それをDate.time()に設定できます。これにより、<head>タグで、パラメーターが常に新しいため、キャッシュされたすべてのバージョンが強制的に上書きされます。 1:
< script type="text/javascript">
var script = document.createElement('script');
var version = Date.time();
script.src = "common.js?v="+version;
document.head.appendChild(script)
< /script>
お役に立てれば!
Windows 7で実行されているIIS7 Windowsサーバーでは、コンテンツのキャッシュを防ぐために、web.config
という構成ファイルの1つに変更を加える必要があります。 IIS 7以降の構成ファイルは%WinDir%\System32\Inetsrv\Config folder
にあります。ここで、%WinDir%
はWindowsをインストールしたフォルダーです(通常はC:/Windows
))。
編集する前にweb.config
ファイルのバックアップコピーを作成し、ファイルに加えた変更によってファイルが破損した場合にロールバックできるようにします。
web.config
ファイルに次のコードを追加するだけで、index.html
のキャッシュを防止できます。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="index.html">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
ここからweb.config
ファイルのファイルパスを取得: Windows Doc:Configuration Reference
上記のキャッシュの構成をここから取得: IISを介して提供される単一ページアプリケーションのHTMLファイルのキャッシュを無効にする方法
私は同じ問題を抱えていましたが、これは私のチェックリストです:
<%Response.Expires=1440%>
ASPコードの多くの行内にあり、他のすべての設定を克服していました!phpでsession_cache_expire
でも同じことができます。http-equiv="Cache-control"
htmlヘッダー内(このテストに合格しました!)。最後に、上記のすべての状況で、チェックキャッシュを無効にするのチェックインnewtworkタブのChromeコンソールは常に、新しいバージョンのページですが、これはデバッグ目的でのみ有効であり、訪問者はそれを行いません。
Chromeはこのことを行いますが、ファイルがあまり変更されていない場合、その意味がわからない場合は、「コンパイル済み」のキャッシュバージョンを使用します。 htmlの場合は、解析されたドンツリーを意味します。 JSプリコンパイル済みコードなど。
通常、これに対処する方法があり、多くのフレームワークは次のようにファイル名内でハッシュを使用します:main.md5hash.js
、ファイル名を変更するとキャッシュが無効になるため。
次に、おそらくhtmlが更新されないままになります。そして明確にするために、私はわかりません、いつでもランダムなブロブでコメントを追加できます...日付のように。
あなたの答えの更新に基づいて、私はあなたの問題が [〜#〜] iis [〜#〜] v7があなたのPCを使用していることによって引き起こされたと言いますメモリローカルハードドライブではなくキャッシュのためにHard reload
と他のすべてのメソッドが正しく動作しないようです。
私は3つの解決策を考えることができます:
1。 IISキャッシュの問題:を修正しています(IISを搭載したPCがないため、テストされていません)
extension
sを入力します。つまり、.aspx
、. css、.jsなど...(一度に1つでしょうか?)ソリューションソース - IIS 7キャッシュについて詳細を読む
2。 IISのいくつかの代替案を使用するいくつかありますが、(私の経験に基づいて)推奨します [〜#〜] wamp [〜#〜] または [〜#〜] xampp [〜#〜] どちらもより良い開発「環境」を提供し、どちらもWindows 7をサポートします。また、 VSコードLive Server 拡張機能を使用できます。
。開発中にChromeを使用するIncognito モード。 (IIS7で機能するかどうかは不明です)
Google Chromeを使用する特定のケースでは、次のことを試してください。開発ツールを開き、[ネットワーク]タブに移動します。 [キャッシュを無効にする]チェックボックスをオンにして、ページを更新します。
注:これが機能するためには、Dev Toolsウィンドウを常に開いたままにする必要があります。
ただし、ページをハードリフレッシュすることなくユーザーに変更を伝達するには、頻繁に変更されるファイルの(参照したとおりに)各参照ファイルの最後にファイルバージョンを追加する必要があります。例えば:
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/stackoverflow/primary.css?v=20b379f72a37" >
末尾に追加されるv=20b379f72a37
は、ファイルコンテンツの自動生成ファイルハッシュです。
これはロングショットですが、どのようなエディター/ IDEを使用していますか?また、index.htmlに対してどのような編集を行っていますか?
ファイルを保存してロードしようとしたときに反映されないそのような編集の例をいくつか教えていただけますか?
問題の再現を試みたいのですが。人々が示唆していることから、問題はコード自体の中にあるようには見えません。それは環境問題だと思いますが、私の疑いを確認するためにあなたからより多くの情報が必要です。
これはおそらく本当にイライラさせられ、あなたが何か悪いことをしているようには聞こえません。
問題は、ブラウザと、呼び出しを行っているスクリプトファイルとの間で、何らかのキャッシングが行われていることです。
それが何であるかを判断するために、localhostのURLをどのように参照していますか?
例:
file://path/to/file.html
http://localhost/file.html
http://127.0.0.1/file.html
http://[machine's-hostname]/file.html
http://[custom-domain-defined-in-hosts-file]/file.html
file://path/to/file.html
を実行している場合、これはWebサーバー/プロキシを参照していないことを意味します。 http://[something]/file.html
の場合は、何らかのWebサーバーを実行しているため、それが原因である可能性があります。キャッシュをオフにできるような設定を探します。
Webサーバーを使用しておらず、文字通りWebサーバーなしでローカルのhtmlファイルを直接参照している場合は、ブラウザが原因であると考えられます。これが事実である場合、私は Martin Shishkov のようにブラウザのキャッシュをオフにすることをお勧めします。
HTMLメタで記述するのはブラウザに対する推奨事項であり、厳密な指示ではありません。ブラウザで厳密なキャッシュが有効になっている場合、これは役に立ちません。
ソリューションはよく説明されています: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
サーバー側では、ファイル自体の最終更新日を含むバージョンをスクリプトに追加することを好みます。
<script src="/myScript.js?v=1579780745150"></script>
ここで、1579780745150はUnixタイムスタンプで、myScript.jsファイル自体を更新します。独自のファイルでのみ機能しますが、外部のファイルは必要ありません。ほとんどの場合、ファイル名にはバージョンがあります。