问题标签 [nsurlcache]
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.
ios - Loadrequest:在不可见的 UIWebView 中或在不使用 UIWebView 的情况下加载网页?
在导航到另一个屏幕之前,我需要下载并缓存整个网页。对于缓存,我有子类NSURLCache
,并通过覆盖 cachedResponseForRequest:request
和storeCachedResponse:forRequest:
方法保存响应。当有 webView 并且我在其中加载请求时,它可以正常工作并缓存。
就我而言,我需要先下载许多网页,然后才能将其实际显示在 webView 上。那么如何模拟loadRequest:
UIWebView 而不实际将其作为子视图添加到任何地方呢?或者最好是任何其他方式我可以在不使用 UIWebView 的情况下加载网页..??
这是我发现的:
如果 UIwebView 未添加为子视图,并且如果我调用
loadRequest:
,则不会加载请求(甚至不调用委托方法..!)我尝试使用 NSURLConnection,
[NSURLConnection sendAsynchronousRequest:urlrequest queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { }];
并且,
但上述方法的问题在于,它只发送一个请求,我的意思是它不会请求我需要缓存的网页中的图像、css和js文件。
那么,有什么方法可以让它像在 .. 中一样请求所有UIWebView
内容loadRequest
??
ios - 使用 max-age=0 自动过期 NSURLCache
我正在NSURLCache
使用AFNetworking
. 缓存工作正常,但无法检查响应是否实际上是从缓存中检索到的。要检查缓存版本是否可用,我使用
检查我的文件的缓存版本。
我的服务器正在发送以下标头:
这基本上应该确保缓存的响应在下载后立即过时。但是,cachedResponseForRequest:
即使它实际上已过期,仍会在磁盘上加载先前缓存的版本。
NSURLCache
永不过期还是我没有发送正确的标头等?- 我在这里错过了其他东西吗?
编辑
我也试过发送
标头和响应仍然从缓存中返回,即使它已经过期。我感觉NSURLCache
工作不正常...
ios - Disk Backed Image Cache for UIImageView in AFNetworking
I'm looking to swap out the AFImageCache
used by default in the UIImageView+AFNetworking
category for something that's disk based and that can managed a little more accurately (something like NSURLCache). Unfortunately, since UIImageView+AFNetworking
is a category and not a subclass, I can't just override af_sharedImageCache with a sublclass of UIImageView
OR another category.
Is there any other way to achieve this functionality without copying and pasting most of UIImageView+AFNetworking
into my own subclass?
ios - 如何测试/检查 NSURLCache 的使用?
如本文所述,我已将两行代码添加到我的项目中。
但是,由于应用程序本身没有发生任何不同,有没有办法测试这种行为并检查它是否按预期工作?仪器中有配置文件吗?当响应被缓存/使用缓存响应时,我可以在 Xcode 的日志中打印一些东西吗?
实现起来似乎很简单,我想确保它实际上对我的应用程序产生影响,并且我不必自己实现缓存系统。
非常感谢,
山姆
ios - NSURLCache 没有被使用
我正在尝试使用 NSURLCache 以便我的应用程序将保存来自 Web 服务器的 JSON 响应,而不是过多地请求它。
我已添加Cache-Control:Max-Age=604800
到请求中的响应标头中。
我在我的应用 AppDelegate.m 文件中添加了以下代码:
我在代码中的请求如下所示:
我认为这不起作用,因为在使用仪器网络配置文件运行时,每次加载视图时我都会看到网络请求的峰值,如果我加载应用程序然后将手机置于平面模式,则不会加载数据(而我怀疑它会使用缓存)。
这是否证明没有制作/使用缓存?而且,如果是这样,有没有人有任何想法,为什么不呢?而且,如果不是证据,有谁知道我怎样才能更好地测试缓存?
非常感谢。
ios - 奇怪的 NSURLConnection 缓存行为
我有一个简单的方法,它需要一个 url 并从服务器加载它:
服务器返回 max-age 为 1 天的响应。
问题是当我重复运行这 3 行时,其中 2 行随机错过缓存并重新加载响应:
如果我向每个请求的查询字符串添加一些随机唯一数据(&x、&y、&z),它可以解决问题:
此外,如果我将查询字符串的长度减少到 80 个字符,它也可以解决问题:
这是怎么回事?这是iOS中的错误吗?我该如何解决?
PS:我已经在一个空的应用程序中测试了这个,在 iOS 5 和 6 上都没有额外的东西。
ios - 如何使 -[NSURLCache cachedResponseForRequest:] 与重定向请求一起使用?
我正在使用 NSURLCache 来存储在集合视图单元格中使用的图像。呈现单元格时,我希望能够获取特定单元格的缓存图像(该单元格具有与之关联的该图像的 URL)。我可以使用 来执行此操作-[NSURLCache cachedResponseForRequest:]
,但问题是如果服务器返回 HTTP 301 Moved Permanently 响应,则该方法返回描述重定向的缓存响应,而不是包含实际图像数据的第二个后续响应。是否有任何简单的方法可以从一个重定向的 HTTP 请求中获取缓存数据NSURLCache
?
ios - Is NSURLCache persistent across launches?
I'm looking for a network caching solution for my iOS application that is persistent across launches. I started to read about NSURLCache, but didn't see any mention regarding persistence. Does anyone know how this behaves when you use NSURLCache then close and open the app? Does it persist?
ios - NSURLCache 缓存不应该被缓存的随机响应
我正在实现一个应用程序,它对我们也控制的 rest-api 进行大量网络调用。最近我们决定在服务器端引入缓存头,以节省一些宝贵的网络和服务器时间。由于我们事先不知道数据的有效期有多长,所以我们没有发送Cache-control: max-age
或Expires
标头,我们所做的只是将Last-Modified
标头与 a 一起发送E-tag
,因此我们总是访问服务器,但大多数时候响应非常快,带有 a 304
. 起初一切似乎都很好,许多请求都被缓存了。但是,由于缓存,我在应用程序上遇到了一些随机数据错误。
出于某种原因,我无法理解,在某些时候,请求被本地缓存并用作“更新”数据而不会命中服务器,而实际上它们不是。问题一直存在,直到一段时间过去。然后一切都再次正常进入服务器,就像它在cache-control
标题中的行为一样,但没有它!。所以,我的问题是:
当原始请求没有附带或标头时NSURLCache
,如何NSURLConnection
确定特定请求不需要上线?有没有人经历过类似的效果?以及如何在不删除整个缓存的情况下解决它?Cache-control: max-age
Expires
更多背景信息:
- 我正在使用AFNetworking,但它依赖于
NSURLConnection
所以我认为它不会改变任何东西 - 使用的缓存是默认
[NSURLCache sharedURLCache]
实例 这是一个
GET
请求,当我检查缓存响应中的标头时,我得到的是:
/li>po [response allHeaderFields]
我无法预测或重现错误何时发生,因此依赖于删除缓存的解决方案不是一种选择。
- 我正在使用 iOS5+
ios - NSURLRequest:总是返回 NSCachedURLResponse。
我正在使用 AfNetworking,我调用了新数据,但我一直在获取缓存的结果。因此,如果我在显示数据的 VC 中,弹出回根目录并更改服务器上的数据,然后等待 30 秒,当我推回 VC 时,我会看到旧数据。如果我在浏览器中点击 URL,我会看到正确的数据。如果我重新运行该应用程序,我将看到数据的更改。
我的服务器响应发回缓存控制标头:Cache-Control:max-age=10, public
据我所知,我总是得到一个 NSCachedURLResponse 并且缓存没有监听我的缓存控制策略。
在我的 AppDelegate 中,我设置了 SharedURLCache:
我如何设置 URLRequest:
我没有做任何涉及 NSURLCache 的事情。
有任何想法吗?
BooRanger