使用来自 NSURLCache 的数据

Posted

技术标签:

【中文标题】使用来自 NSURLCache 的数据【英文标题】:Use data from NSURLCache 【发布时间】:2012-11-14 13:15:52 【问题描述】:

我已经设置了一个 NSURLCache 并将 sharedcache 设置为初始化的缓存。

当我在 NSURLConnection 委托中记录大小时,我可以看到缓存大小在增长。

由于某种原因,请求相同数据时,再次向服务器发出请求,缓存大小的日志显示日志保持相同大小。

这表明缓存工作正常,但由于某种原因,URL 加载器没有从缓存中提取。

我对请求使用默认缓存策略,并仔细检查了响应中的标头。

在这里阅读后,我看到其他人提到相同的问题并将内存容量和磁盘容量设置为相同的值可以解决他们的问题,但它对我不起作用。每次都发出新请求,而不是从缓存中拉取。

在发出请求之前检查缓存中的数据是否明智?我没有看到 NSURLRequest 方法的缓存策略参数的意义。

【问题讨论】:

您的网址是否有查询字符串? @AlBeebe 谢谢,是的,它确实有一个查询字符串。它将如何影响缓存? 它不会自动缓存 我看到缓存大小在增长。如何查看缓存本身中的内容?所以我应该重写缓存委托方法进行写入并检查缓存中的对象以进行读取而不是依赖缓存策略? 如果您使用查询字符串,我认为它不会缓存。做一个快速测试,看看它是否在您不传递查询字符串时缓存响应。也许您的查询字符串可能会在您每次发出请求时不断变化,例如,如果其中一个参数是时间。 【参考方案1】:

HTTP 还可以让服务器告诉您如何缓存 - 它可以禁止缓存(并设置最大缓存时间)

可能会影响 SDURLCache


不管怎样,也看看UIWebView and NSURLCache have a troubled relationship

据说 UIWebView 不起作用

【讨论】:

是的,我看到了,谢谢,但我没有使用 UIWebView。我不确定 SDURLCache 是如何相关的。 http 标头包含所有需要的缓存信息。 SDURLCache - nsurlcache 。抱歉误读。但我的第一点是……但如果响应标头看起来不错,那就奇怪了

以上是关于使用来自 NSURLCache 的数据的主要内容,如果未能解决你的问题,请参考以下文章

NSURLCACHE

NSURLCache 和数据保护

NSURLCache详解和使用

NSURLCache详解和使用

AF网络和缓存

NSURLCache内存缓存