2

我在 webview 中加载一本书的 xhtml 页面。第一次打开一本书并在 webview 中加载其页面时一切正常,但是当我返回主屏幕并加载其他书籍时,会显示该书的封面页和索引页(cover.xhtml 和 index.xhtml)旧书(打开的第一本书)。所有书籍都一样,即任何书籍的封面和索引页都显示为第一本打开的书籍。

我尝试了很多事情,比如删除 webview 并添加回来。

[self loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];   ,


[webView loadHTMLString:@"<html><head></head><body></body></html>" baseURL:nil];

没有帮助。问题是封面和索引页的唯一问题是其余页面都很好。

是不是因为所有书籍中的文件名都相同(cover.xhtml)所以它被缓存并总是提供相同的内容?如果是这样,解决方案是什么。

4

4 回答 4

1

试试这个,一旦你回到你的主屏幕,在你的退出方法中添加这行代码

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

我知道这是一个糟糕的 hack,但它会清理你的 webview。

于 2013-08-05T16:09:35.877 回答
1

请尝试设置 Webview 请求的缓存策略,如下所示,

[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];

在这里查看 NSURLRequest 的苹果 CachePolicy

于 2013-08-06T12:09:26.500 回答
1

这是因为它是从缓存中加载数据,而不是从请求 URL 中加载数据。

当我不信任系统和服务器以确保我的数据没有被缓存时,我总是使用一个小的解决方法

在请求的末尾添加一个简单的垃圾参数,每次都有一个随机值。

例如

而不是加载http://www.example.com/somepage.php

从http://www.example.com/somepage.php?junkValue=123456获取数据

这不是一个完美的解决方案。完美的解决方案,它检查 nsurlrequest 对象中的缓存控制标头并相应地获取数据,或禁用请求对象的缓存。

于 2013-08-04T15:24:14.797 回答
1

您可以在使用发出该请求时清除缓存

[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];

如果你想清除整个缓存,你可以调用

[[NSURLCache sharedURLCache] removeAllCachedResponses];
于 2013-08-04T09:49:02.340 回答