2017-03-16 8 views
0

エラーが発生し、特定のHTMLページがブラウザによってキャッシュされるように設定されました。他の当事者がそのURL(SEOを含む)に依存しているため、そのページのURLを変更することは望ましくありません。URLに変更を加えずにキャッシュされたURLをブラウザに再ロードさせる方法

可能な限り多くのクライアントを作成してそのページをリロードする方法はありますか?サイトを閲覧するときにクライアントがそのページにアクセスすることがよくあるため、問題のあるページにアクセスする前に新鮮なJavaScript(またはその他のリソース)を送信できることがよくあります。たぶん、リロードを強制するJavaScriptトリックがありますか?

+1

サーバからページを送信するときに、[Cache-Control]ヘッダを設定することができます。[この回答](http://stackoverflow.com/questions/49547/how-to-control-web-page-全ブラウザをキャッシュする方法)を参照してください。私はすでにキャッシュされている場合、どのようにキャッシュを削除するように人々を強制するのかわかりません。 – George

答えて

2

コードスニペットはuriOfCachedPageに等しいURIとページのキャッシュエントリを無効にします:

var xhr = new XMLHttpRequest(); 
xhr.open("GET", uriOfCachedPage, true); 
xhr.setRequestHeader("Cache-Control", "max-age=0"); 
xhr.send(); 

このコードを、ユーザーがおそらく得るスクリプトやHTMLページに挿入する必要があります。

詳細については、MDNのXMLHttpRequestページとRFC 7232ハイパーテキスト転送プロトコル(HTTP/1.1):キャッシュのRequest Cache-Control Directivesセクションを参照してください。

cachedPageReloadedフラグをクッキーまたはlocalStorageに保存し、キャッシュエントリが無効になっていない場合にのみ無効にすることもできます。 MDNのDocument.cookieWindow.localStorageページを確認してください。

-1

あなたのURLの末尾にクエリ文字列としてタイムスタンプを追加することができます。

var url = "http://yoursite.com/your.html?r=" + (new Date()).getTime(); 

あなたは、URLを変更しないようにキャッシュなしオプションでAJAXリクエストを呼び出すことができますし、いずれかのページをリフレッシュしていない:

$.ajax({ 
     url: "your.html", 
     cache: false, //<== don't cache! 
     type: "GET", 
     dataType: "json", 
     success: function(data, textStatus) { 
         $("#body").html(data); 
       } 
    }); 

JavaScriptソリューションをお探しですか?

window.location.reload(true); 

Full HTML solution

<meta http-equiv="cache-control" content="max-age=0" /> 
<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
<meta http-equiv="pragma" content="no-cache" /> 

サーバ側からこれらのヘッダを付加するための読書Furher:以下https://stackoverflow.com/a/2068407/3958365

+0

これは、できないページのURLを変更することになります。 – boot4life

+0

どちらですか? 4種類のソリューションがあります... – ErTR

+1

ここで何が起こったのかよくわかりません。私は本当に他の人を見たことがありますか?私がコメントしたとき、彼らはそこにいなかったと確信しています。とにかく、実際にキャッシュすると、そのページにJSタグやメタタグを渡すことができなくなるため、AJAXだけが動作します。私はdownvote、btwしませんでした。 – boot4life

関連する問題