3

TLDR IEは、URLにMath.random()が含まれていても、リクエストをキャッシュしています。


だから私は私のURLの最後にランダムに数学を追加しました:

var MYKMLURL = 'http://' + host + 'data/pattern?key='+ Math.random();

また、関数パラメータにランダムな数学を追加しました。

window.setTimeout(RefreshPatternData, 1000, MYKMLLAYER);


           function RefreshPatternData(layer) {
               layer.loaded = false;
               layer.setVisibility(true);
               layer.refresh({ force: true, params: { 'key': Math.random()} });
               setTimeout(RefreshPatternData, 30000, MYKMLLAYER);
           }

したがって、リクエストはhttp:// host / data / pattern?key=35678652545などとして表示されます。

リクエストが行われるたびに変更されます。

Firefox、Chrome、Safariなどで動作します。ただし、IE8はまだデータをキャッシュしており、レイヤーを更新していません。

なぜこれが発生する可能性があるのか​​についてのアイデアはありますか?


だから私は追加しました:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

まだデータをキャッシュしています。他にアイデアはありますか?

4

2 に答える 2

2

この投稿への回答を試すことができます:

IEキャッシングを防止する

于 2010-06-09T03:46:34.960 に答える
2

IEでも同様の問題が発生し、AJAXリクエストがキャッシュされました。(なぜ、神様、なぜAJAXリクエストをキャッシュするのですか?)他のすべてで正常に機能しましたが、IEはAJAXリクエストをキャッシュしないようにHTTPヘッダーを介して強制する必要がありました。

URLを忘れてしまいましたが、http: //greenash.net.au/thoughts/2006/03/an-ie-ajax-gotcha-page-caching/を参照してください。

また、私のためにそれを行ったHTTPヘッダーは次のとおりです。

Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0

...私はどこかでウェブサイトから正直に収集しました。

于 2010-06-09T03:46:56.453 に答える