问题标签 [nsurlrequestcachepolicy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1319 浏览

ios - 未使用 NSMutableURLRequest setCachePolicy

我有一个NSURLMutableURLRequest我打电话的地方

当我 po[urlRequest cachePolicy]时它总是 1。

吸气剂在做什么会迫使它返回 1?

0 投票
0 回答
1479 浏览

ios - iOS 缓存策略行为 UIWebView

我正在使用 UIWebview 并将 NSMutableURLRequest 加载到其中:

当在另一个 UIWebview(一种起始页)中单击链接时,会加载此请求。

当使用 WireShark 查看网络流量时,最初会捕获 150 个请求。导航回起始页并再次打开链接应该会再次报告 150 个请求,但事实并非如此。仅捕获了大约 100 个请求。缺少的是一些 CSS 文件、PNG、字体、JSON 和 XML。

关闭整个应用程序后,如预期的那样捕获了 150 个请求。似乎 UIWebView 本身正在缓存一些数据并忽略设置的缓存策略。

有没有办法强制 UIWebView 根据他们的策略加载资源?

0 投票
1 回答
1587 浏览

ios - UIWebView 具有缓存策略的奇怪行为

我有这个问题UIWebView

客户要求检查我们的缓存策略,UIWebView因为据他说,在重新加载页面时,服务器上更新的内容没有出现在设备上。

现在,我看到NSURLRequest我们传递给 的UIWebView有一个cachePolicyNSURLRequestReturnCacheDataElseLoad这可以执行客户论点。如果我理解正确的话,只有第一个请求是从服务器加载的,后续请求是从缓存中加载的。

然后我将 cachePolicy 更改为NSURLRequestUseProtocolCachePolicy,因为我在NSURLRequest.h标题中看到有趣NSURLRequestReloadRevalidatingCacheData的是“未实现”。

一切似乎都很好,直到我回滚到以前的策略并且我在 Charles 上看到每次UIWebView消失然后重新出现在屏幕上时,都会在服务器上完成一个新请求,并模拟对结果页面的简单更改我也可以查看设备上的更改。

服务器返回的标头是顺便说一句:

对于 8 月 13 日 11:46 GMT+2(柏林)提出的请求

所以对我来说,标题看起来不错,但UIWebView每次都尝试重新加载内容。

我还查看了webView:shouldStartLoadWithRequest:navigationType:委托方法,发现 的cachePolicy始终request设置为 1 ( NSURLRequestReloadIgnoringLocalCacheData)。

这怎么可能?还有客户怎么可能抱怨这个问题(他甚至给我发了截图,所以这不是发明的)

谢谢您的帮助

0 投票
2 回答
636 浏览

objective-c - NSMutableURLRequest 返回旧值,即使 cachePolicy 是 NSURLCacheStorageNotAllowed

我使用此处发布的代码:
connectionDidFinishLoading 中的连接释放方法,导致错误

现在首先执行返回 didFail 日志。第二次执行;返回旧的响应数据。尽管我的(本地主机)服务器完全脱机。并且 cachePolicy 是 NSURLCacheStorageNotAllowed (检查我上面发布的链接上的代码)

响应数据似乎缓存在某处并且仍然存在。

但是如果我使用 NSURLRequestReloadIgnoringLocalAndRemoteCacheData //注释为-未实现-

不返回旧缓存。

但如果是这样,有什么区别:
NSURLRequestReloadIgnoringLocalAndRemoteCacheData

NSURLCacheStorageNotAllowed

我该怎么办 ?

0 投票
3 回答
5486 浏览

ios7 - NSURLRequest 缓存问题 iOS 7

在 iOS 7 cachePolicy 中不起作用,它只是缓存下载的 json。

如何在 iOS 7 中禁止缓存?

0 投票
1 回答
144 浏览

ios7 - 我应该为 NSURLRequest 的 NSURLRequestCachePolicy 使用哪个值?

NSURLRequest +requestWithURL:cachePolicy:timeoutInterval: 有缓存策略。

XCode5 中的文档列出了一个带有四个常量的枚举,下面紧接着列出了七个不同的常量。文档不一致。哪些选项有效,我应该使用哪些选项?

0 投票
0 回答
1005 浏览

ios - iOS应用程序终止后NSURLCache不起作用

我正在构建一个应用程序,我也在其中实施离线模式。为此,我使用了 NSURLCache 机制。当应用程序处于前台时,即使设备处于离线模式,缓存机制也会完美运行。当我退出应用程序然后在离线模式下打开它时,问题就出现了。这次 NSCachedURLResponse 为特定请求返回 nil。

下面是我为此使用的代码:

自定义缓存创建:

调用服务器和缓存对象:

我可以在应用程序的库路径中看到 caches.db 保存了响应。但是当我试图在离线模式下读取它时(应用程序从后台被杀死后),缓存的响应为零。我已经浏览了以下链接(以及更多链接),但找不到我的问题的解决方案。

NSURLCache 缓存响应问题

离线时如何使用 NSURLCache 返回缓存的 API 响应(iOS 应用)

http://twobitlabs.com/2012/01/ios-ipad-iphone-nsurlcache-uiwebview-memory-utilization/

http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

绕过http响应头Cache-Control:如何设置缓存过期?

我检查了 api 响应中的 http 标头字段和缓存的标头,问题不是来自服务器端。

我还尝试在创建自定义缓存时在 diskPath 参数中提供路径,但是当应用程序处于前台并且互联网断开连接时,它甚至不会加载缓存的对象。我也更改了到期日期,但工作仍然相同。

我曾尝试使用 SDURLCache,但我面临着类似的问题。但是,我已经使用 ASIHTTPRequest 成功实现了这一点,但我不想使用它,因为我已经编写了所有服务器操作,并且必须使用 ASIHTTPRequest 方法更改每个请求。

请帮我找到解决方案。提前致谢....

0 投票
1 回答
1572 浏览

ios - 停止 NSURLRequest 写入缓存

我有一个使用 NSURLRequest 每秒发送数百个 HTTP 请求的 iOS 应用程序。它总是在 WiFi 上,所以性能很好,而且每个响应的内容都不同,所以我通过以下方式禁用了缓存NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData

然而,NSURLRequest仍在将数据写入磁盘——短短几分钟内就写入了数百兆字节。

这尤其令人担忧,因为我的应用程序用于数据监控,并且可能一次运行几个小时 - 并且 NSURLRequest 每秒写入磁盘数百次......我担心闪存在这些条件下会磨损,即使我认为它具有磨损均衡。

如何停止NSURLRequest将缓存数据写入磁盘?

0 投票
1 回答
887 浏览

ios - [NSURLCache cachedResponseForRequest:] 如何进行匹配?

NSURLCache 是如何确定它有一个请求的缓存响应的?我不清楚两个 NSURLRequest 之间的相等性是如何定义的,或者它们是如何散列的。

0 投票
1 回答
702 浏览

ios - 带有缓存策略的 AFHTTPSessionManager 不起作用

服务器发送缓存头作为响应。

“缓存控制”:“最大年龄=120,公共”

首先,我将 NSURLRequestReturnCacheDataElseLoad 与 AFHTTPRequestOperation 一起使用。

通过在 AppDelegate 中设置共享缓存并在 NSUrlRequest 中设置 NSURLRequestReturnCacheDataElseLoad。

它工作得很好。

但是当我尝试通过以下方式设置 NSURLRequestReturnCacheDataElseLoad 来对 AFHTTPSessionManager 做同样的事情时,

1. request.session.configuration.requestCachePolicy

2.request.requestSerializer.cachePolicy _

3.覆盖-(NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *, id, NSError *))completionHandler

似乎没有任何工作。

AFNetworking 版本 - 2.5.1