JavaScriptを使用してページをリロードし、ブラウザのキャッシュからプルしないようにする必要がありますが、代わりにサーバーからページをリロードします。[その間にページの要素が変更されるため]
IEとFFでは、次のコードが正常に機能することがわかりました。
window.location.reload(true);
ただし、ChromeまたはSafariでは機能しません。
私は次のことを試みましたが、役に立たなかった。
window.location.replace(location.href);
document.location.reload(true);
document.location.replace(location.href);
この問題の解決策はありますか?
調査結果
これを調べたところ、この問題はHTTPプロトコルの処理であることがわかりました。
- Chromeは
Pragma: no-cache
HTTPフィールドを使用してリクエストを送信します Last-Modified: DATE1
サーバーはフィールドで応答します- JSは
location.reload(true)
、キャッシュではなくサーバーからのリロードを強制するために使用します - Chromeは
If-Modified-Since: DATE1
フィールド付きのリクエストを送信します - サーバーは次のように応答します
HTTP Status 304 Not Modified
サーバーアプリケーションは、動的ページコンテンツの状態の変化に気付かず、したがってを返さないという障害があります200
。If-Modified-Since
ただし、 JSlocation.reload(true)
が呼び出されたときにフィールドを送信するブラウザはChrome/WebKitだけです。
他の誰かが同じ問題に遭遇した場合に備えて、私は自分の調査結果をここに置くと思いました。