web-dev-qa-db-ja.com

キャッシュが原因でユーザーのWebサイトのHTMLが更新されない

私はWebサイトを作成していて、ユーザーのWebサイトキャッシュで問題が発生しています。私は自分のウェブサイトを開発し、開発用のウェブサイトのキャッシュを無効にするようにchrome開発者ツールを設定しました。問題は、新しい変更をリリースすると、すべてのユーザーが更新を取得できないためです。ブラウザーのキャッシュ。友達のコンピューターで自分のWebサイトのキャッシュを手動で削除すると機能しますが、新しい更新を取得するために誰もがこれを実行することは期待できません。とにかく、バージョン管理などでこれを回避する方法はありますか?周りを見回しましたが、何も見つからないようです。

編集:私はキャッシュを完全に防ぐことができることを知っていますが、悪いデザインのように見えるキャッシュを完全に防ぎたくありません

12
Tomer Shemesh

キャッシュされているリソースは何ですか?私はjs/cssファイルを疑っていますが、これを処理する良い方法は、バージョンが変更された場合にブラウザに新しいファイルを強制的にロードさせるために、バージョンを含むクエリパラメータをこれらのリソースのパスに追加することです:

<script type="text/javascript" src="your/js/path/file.js?v=1"></script>
<link href="/css/main.css?v=1" media="screen,print" rel="stylesheet" type="text/css">

また、Webサイトの新しい更新をリリースするときは、次のようにバージョンを置き換えます。

<script type="text/javascript" src="your/js/path/file.js?v=2"></script>
<link href="/css/main.css?v=2" media="screen,print" rel="stylesheet" type="text/css">

ブラウザは、ファイルが新しいファイルであることを認識し、キャッシュを更新します。お役に立てれば。

HTMLキャッシュを無効にするには、次のようにファイルにメタタグを追加します。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

しかし、これはこのメタタグを持つhtmlファイルのキャッシュを完全に無効にします。js/ cssファイルのようにこれを簡単に処理する方法はないと思いますが、将来的にhtmlを更新するようにメタタグを設定できます。さらに情報が必要な場合にそのメタタグを使用する方法を説明する記事は次のとおりです。

http://www.metatags.info/meta_http_equiv_cache_control

12
taxicala

一定の時間またはその他の条件の後に、ページを強制的に自動再読み込みすることができます。

_<META HTTP-EQUIV="refresh" CONTENT="15">_

または、よりイベント駆動型にします。

<A HREF="javascript:history.go(0)">Click to refresh the page</A>

これらのソリューションのいずれかを特定のニーズに合わせて操作できるはずです。

2
Kirk Powell