特定のサーバーでホストされているWebページindex.htmlがあります。私はexample.com
をexample.com/index.html
に向けました。したがって、index.htmlで変更を加えて保存し、example.comを開こうとしても、変更は反映されません。 Webページがキャッシュされている理由。
次に、ページを手動で更新します。キャッシュからではなく、新しいコピーが読み込まれるため、正常に機能します。しかし、クライアントにそうするように依頼することはできません。彼らはすべてが完璧であることを望んでいます。だから私の質問は、キャッシュからではなくサーバーから毎回ファイルをロードする方法についてのトリックやテクニックがありますか?
追伸:CSS、JS、画像ファイルのトリック、つまり?v=1
の追加は知っていますが、index.htmlでそれを行う方法はわかりません。
任意の助けをいただければ幸いです。ありがとう!
これで:
<meta http-equiv="expires" content="0">
コンテンツを「0」に設定すると、ブラウザは常にWebサーバーからページをロードします。
メタタグは私にはうまくいきませんでした。フィルターまたはコントローラーを実装するJavaクラスからヘッダーを設定しました。それが機能しました。ここにコードがあります
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
2018年の時点で利用できる最も信頼できる方法は2つだけです
1)**<meta http-equiv="expires" content="0">**
このメタタグを使用しますが、ブラウザでWebページが処理されるとすぐにこのタグがページのすべてのキャッシュを破棄するため、注意してください。
2)各ページ要求に対してサーバーで一意のIDを生成し、?を使用してHTMLドキュメント内のすべてのファイル名の最後にこのIDを追加します毎回サーバーからロードする必要がある画像、ドキュメント、css/jsファイル、ビデオなどに一意のIDを追加する前。たとえば、<img src="images/profile223.jpg" alt="profile picture">
のようなHTMLタグがある場合、サーバー側でこのecho '<img src="images/profile223.jpg?'.$uniqueid.'"" alt="profile picture">';
のようなファイル名の最後に一意のIDを追加します。この例ではphpを使用していますが、任意の言語で一意のIDを生成できます。 Google、Facebook、Microsoft、Twitterなどのすべての大企業は、最も効果的な方法であり、ログインセッションIDなどのユーザーブラウザーに保存するキャッシュデータに影響しないため、この手法を使用します。この手法はブラウザ間で互換性があり、IE、Firefox、Chrome、Safari、Operaの古いバージョンをサポートしています。同じ手法を使用して、URLの末尾に一意のIDを追加できます。
以下の方法を試してみてください。私にとってはうまくいきました。
.htaccessファイルに以下のコード行を追加してください。
<IfModule mod_headers.c>
<FilesMatch "\.(html|php)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</FilesMatch>
<FilesMatch "\.(ico|pdf|jpg|png|gif|js|css)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
</IfModule>
上記のコードを使用すると、ブラウザは.htmlファイルをキャッシュしません。
ファイルに追加のヘッダーを送信して、クライアント(ブラウザー)にファイルをキャッシュしてはならないことを通知できます。 Apacheを入手した場合は、 mod_expires をご覧ください。 PHPなどのサーバー側スクリプト言語を使用している場合は、それを使用して解決することもできます。
私は自分のウェブサイトでこの問題に遭遇しました。 URLにq = ''を追加します
http://yoururl.com/somelinks?q=fill_with_random_number
私にとっては、それは動作します