首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cocoa -阻止WebKit中的Javascript缓存- Safari Beta4错误?

Cocoa -阻止WebKit中的Javascript缓存- Safari Beta4错误?
EN

Stack Overflow用户
提问于 2009-05-22 23:28:49
回答 2查看 1.8K关注 0票数 4

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

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

在运行时,为了响应用户输入,我会重写data.js文件,通常使用应用程序中的当前数据填充该文件。

( body load上的index.html文件使用data.js文件填充index.html中的表。index.html本身不会修改。)

为了(假设)防止WebKit缓存我经常更改的数据,我调用:

代码语言:javascript
复制
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

代码语言:javascript
复制
[[myWebView mainFrame] loadRequest: urlRequest];

这在Tiger和Leopard中工作得很好。

但是,如果安装了Safari Beta 4,它在Leopard中会失败。webview中的index.html文件的绘图不会考虑对data.js文件的当前更改。不管data.js的缓存策略如何,看起来javascript文件(URL)实际上正在被缓存。

作为一种变通方法,我尝试在loadRequest之后调用[myWebView mainFrame reload],但这会导致其他问题。( webview根本不更新。)

有没有人能建议一种方法来修复或解决这种行为?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-05-22 23:55:24

这不是一个解决方案,而是一种可能可行的变通方法:

试着在你的网址后面加上一些像"?version=some_random_number“这样的东西,每次你重新加载的时候都有一个不同的随机数。根据我的经验,这在强制webkit重新加载方面非常有效。

票数 4
EN

Stack Overflow用户

发布于 2009-06-17 23:53:19

只是把这个关了

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

但是,变通方法(参见下面的注释)确实有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/900415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档