gpt4 book ai didi

ios - 使用本地镜像文件时清除 UIWebView 缓存

转载 作者:IT王子 更新时间:2023-10-29 08:04:00 26 4
gpt4 key购买 nike

我使用 UIWebView 加载本地 html,并且在 Objc 创建的 html 中有一个 PNG 文件。

修改 PNG 文件后,我在 UIWebView 中重新加载 html,但图像没有改变。但是,如果我退出应用程序并重新打开它,图像文件将更改为新文件。

我用Finder检查了Documents中的PNG文件,所以我确定它已经被修改了,但是旧的还在UIWebView中。

所以,因为我认为这是一个 UIWebView 缓存问题,所以我试过:

  • [[NSURLCache sharedURLCache] removeAllCachedResponses];

  • /p>

它们都不起作用,我无法更改文件名,因为 PNG 文件在很多地方使用(其他 html 和 objc 代码)。

我也试过这个:some.png?r=randomNumber但无法显示。

在本地 html 中使用本地镜像文件时,如何清除 UIWebView 缓存?

最佳答案

除了在每次访问时重命名每个文件之外,我只看到一件事对此有用,那就是用 javascript 修改 HTML 以在图像 url 上添加时间戳,这样它就会欺骗 webview 认为它是一个不同的文件。无论您在 ? 之后放什么,图像(通常)都会加载相同的内容。在他们的网址中。我认为这比每次加载 Web View 时重命名每个文件更容易。像这样(使用 jQuery):

<img src="myimg.jpg" />

<script>
$(function() {
$('img').each(function(i, el) {
$(el).attr('src', $(el).attr('src')+'?pizza='+(new Date()).getTime());
});
});
</script>

我想这是假设这个 javascript 在加载图像之前加载并运行,但理论上这应该有效。

为了了解一些背景知识,我在 webview 中创建了一个页面,该页面使用 RequireJS 来异步加载相当多的文件。除了我加载的是 javascript 文件而不是图像之外,我遇到了与这个问题所谈论的完全相同的问题。解决此问题的关键是为 javascript 文件的每个路径添加时间戳,从而欺骗 webview(例如 me.js?ts=236136236 和 whatever.js?ts=3153524623)。我发现这很好用。

我需要做的另一件事是在将 HTML 文件加载到 webview 时向其路径添加时间戳,如下所示:

[NSURL URLWithString:[[NSString stringWithFormat:@"%@/index.html?pizza=%f", webDirectoryPath, [[NSDate date] timeIntervalSince1970]]

我现在可以修改所有本地文件,每次出现 webview 时,更改都会生效。

关于ios - 使用本地镜像文件时清除 UIWebView 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com