我有一个包含WebView的可可应用程序。我的目标是10.4SDK,因为该应用程序的安装客户群。(即我不能要求Leopard。)
我有两个文件: index.html和data.js。
在运行时,为了响应用户输入,我会重写data.js文件,通常使用应用程序中的当前数据填充该文件。
( body load上的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文件的当前更改。不管data.js的缓存策略如何,看起来javascript文件(URL)实际上正在被缓存。
作为一种变通方法,我尝试在loadRequest之后调用[myWebView mainFrame reload],但这会导致其他问题。( webview根本不更新。)
有没有人能建议一种方法来修复或解决这种行为?谢谢。
发布于 2009-05-22 23:55:24
这不是一个解决方案,而是一种可能可行的变通方法:
试着在你的网址后面加上一些像"?version=some_random_number“这样的东西,每次你重新加载的时候都有一个不同的随机数。根据我的经验,这在强制webkit重新加载方面非常有效。
发布于 2009-06-17 23:53:19
只是把这个关了
无论缓存标志如何,在Safari 4最终版中,Javascript仍然被缓存。令人失望,特别是考虑到这是一个已知问题。我强烈怀疑,在浏览器大战中,营销点数和测试分数的需求已经胜过了对正常工作代码的需求。
但是,变通方法(参见下面的注释)确实有效。
https://stackoverflow.com/questions/900415
复制相似问题