私はWebViewを含むCocoaアプリを持っています。私は10.4 SDKをターゲットにしています。 (つまり、私はLeopardを要求できません)Cocoa - WebKit - Safari Beta 4のバグでJavascriptのキャッシュを防止しますか?
私はindex.htmlとdata.jsという2つのファイルを持っています。
実行時に、ユーザーの入力に応答して、私はdata.jsファイルを上書きし、しばしばアプリケーションから現在のデータを入力します。
(data.jsファイルはindex.htmlの内のテーブルを移入する体の負荷にindex.htmlファイルによって使用される。自体をindex.htmlに変更されない。)
(おそらく)を防止するために私OFT-変化するデータのWebKitのキャッシングは、私が呼ん:
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
と
[[myWebView mainFrame] loadRequest: urlRequest];
これはタイガーとヒョウに非常に適しています。
ただし、Safari Beta 4がインストールされている場合はLeopardで失敗します。 webview内のindex.htmlファイルの描画は、data.jsファイルの現在の変更を考慮しません。 URLのキャッシュポリシーに関係なく、javascriptファイル(data.js)が実際にキャッシュされているようです。
回避策として、loadRequestの後に[[myWebView mainFrame] reload]を呼び出すことを試みましたが、これは他の問題を引き起こします。 (Webビューはまったく更新されません)
誰でもこの問題を修正したり回避する方法を提案できますか?ありがとう。
ご協力いただきありがとうございます。私はちょうどあなたのアプローチを試みたが、うわー、JavaScriptはまだキャッシュされています。 :( – SirRatty
あなたのアドバイスに基づいて回避策を考え出しました。 URLとしてindex.htmlファイルを読み込むのではなく、ファイルの内容をNSStringとして読み込んでいます。 HTMLを読み込むための「data.js」を探しているポイントで:?。 data.js = 1234 cacheBaffler; //いくつかの乱数 私は、その後のWebViewのメインフレーム上でloadHTMLStringを呼び出す これは正常に動作します興味深いです。データポイント:ファイル名の変更なしで、loadHTMLStringはSafari 4 Betaに関係なく、TigerとLeopardの両方でキャッシュを使用します。ブラウザテストのスコアには最適です... – SirRatty
うれしいです:) –