4

我有一个包含 WebView 的 Cocoa 应用程序。由于应用程序已安装客户群,我的目标是 10.4 SDK。(即我不能要求 Leopard。)

我有两个文件:index.html 和 data.js。

在运行时,为了响应用户输入,我通常会覆盖 data.js 文件,并使用来自应用程序的当前数据填充它。

(index.html 文件在正文加载时使用 data.js 文件来填充 index.html 中的表。index.html 本身不会被修改。)

为了(据说)防止 WebKit 缓存我经常变化的数据,我调用:

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

[[myWebView mainFrame] loadRequest: urlRequest];

这在 Tiger 和 Leopard 中效果很好。

但是,如果安装了 Safari Beta 4,它会在 Leopard 中失败。在 webview 中绘制 index.html 文件不考虑当前对 data.js 文件的更改。无论 URL 的缓存策略如何,似乎实际上都在缓存 javascript 文件 (data.js)。

作为一种解决方法,我尝试在 loadRequest 之后调用 [[myWebView mainFrame] reload],但这会导致其他问题。(网络视图根本没有更新。)

任何人都可以提出解决或解决此行为的方法吗?谢谢。

4

2 回答 2

4

不是解决方案,而是可能有效的解决方法:

尝试在您的 URL 中添加类似“?version=some_random_number”的内容,每次重新加载时使用不同的随机数。以我的经验,这在强制 webkit 重新加载方面非常有效。

于 2009-05-22T23:55:24.263 回答
2

[刚刚关闭这个]

无论缓存标志如何,Javascript 仍在 Safari 4 final 中缓存。令人失望,尤其是考虑到这是已知问题。我强烈怀疑浏览器大战中对营销点和测试分数的需求已经超过了对正常工作代码的需求。

但是,解决方法(请参阅下面的评论)确实有效。

于 2009-06-17T23:53:19.103 回答