问题标签 [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.

0 投票
1 回答
906 浏览

ios - NSURLConnectionDelegate 的连接:willCacheResponse:随机调用

这是我打的非常简单的电话:

我尝试使用在谷歌上找到的 2 个随机 pdf 网址(搜索“truc 文件类型:pdf”):

它们都具有相似的标头(在 connection:didReceiveResponse 中使用 allHeaderFields :):

一个)

二)

但是 connection:willCacheResponse: 只为 url B 调用。我在 Cache.db sqlite 数据库中只找到了 url B。

为什么不缓存 url A?

0 投票
1 回答
907 浏览

ios - 拦截来自 UIWebView 的衍生 URL 请求

我正在尝试通过 NSURLProtocol 将指定的网页缓存到磁盘,现在我只能获取第一个 URL 请求,但 UIWebView 会产生更多用于加载图形的 URL 请求。那么如何拦截 UIWebView 从第一个 URL 产生的所有请求呢?非常感谢!

0 投票
2 回答
1356 浏览

ios - How to download a web page with it's inner resoures like images,css in iOS?

I'm trying to download the specified web pages with their inner page resources to disk. When I send a NSURLRequest, only the initial URL would be request, but the resources as images,css,js would not be download.

Someone suggests to use cache, but I don't want to cache every web page browsed in the uiwebview, but only the one I specified.For example, when I input an url to the uiwebview addressbar then click on the "save" button, the page will be saved entire, but the other browsing in the webview will not be cached automatically.

Does there any way to download the entire webpages? Thank you very much!

0 投票
1 回答
958 浏览

ios - 如何判断 NSURLCache 是否正常工作?

我已经在我的 App Delegate 中配置了内存和磁盘缓存,但似乎没有使用缓存 - 它似乎每次都进入网络。有没有一种简单的方法来检查数据是否被缓存然后在后续请求中检索?我只需要设置缓存吗?我是否需要通过每次调用 cachedResponseForRequest 或类似的方法来明确检查缓存?它在模拟器上工作吗?我的部署目标是 iOS 6。

谢谢。

0 投票
1 回答
1044 浏览

ios - 如何检查 UIWebView 是否从 NSURLCache 加载?

实际上,我对此有不止一个问题......我对 NSURLCache 和 UIWebViews 还是很陌生,但我认为以某种方式掌握了基础知识。

无论如何,我能够成功地为我的 UIWebView 实现缓存(我认为)。我初始化了 NSURLCache。我的 UIWebView 使用 loadRequest: 方法加载其内容。我将拥有 UIWebView 的 ViewController 分配为委托。我还让 ViewController 实现了 NSURLConnectionDataDelegate。我实现了 connection:willCacheResponse: 方法只是为了在控制台中记录一条消息,以便我可以检查缓存是否完成。我还记录了当前的磁盘和内存使用情况。缓存后它会增加,所以我可以看到它确实有效。

但是,当我再次加载页面时,我认为请求会再次发送到服务器,因为正在调用 connection:didReceiveResponse: 和 connection:willCacheResponse 等连接委托方法。

我还想尝试使用 cachedResponseForRequest: 从缓存中获取 cachedResponse。我在 webViewDidFinishLoad: 中调用了这个方法,但它总是返回 null。缓存真的有用吗?

如何判断 WebView 是否从缓存中加载?我是否在滥用 cachedResponseForRequest:?另一方面,至少应该为缓存提供哪些适当的 Control-Cache 标头值?我正在对 google 的主页 URL 进行测试,它返回其 Cache Control 标头的私有值,但我可以看到缓存有效,因为 connection:willCacheResponse: 被调用。

请帮忙?

0 投票
0 回答
215 浏览

ios - 在离线模式下加载磁盘缓存

      我已经阅读了苹果的文档,发现可以从 ios5 获得磁盘缓存。当 UIWebView 的实例开始加载互联网时,- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)requestNSURLCache 中的方法返回的值不是 nil。但是 webView 仍然无法加载。
       似乎网络内容已被缓存,但 iOS 不在离线模式下使用它,并且只给出一个错误,说互联网已关闭。
      我发现iOS在缓存目录下的一个名为“Cache.db”的文件中缓存了数据,有没有办法让UIWebView在离线模式下加载这个文件中的数据?
         非常感谢。

0 投票
1 回答
1016 浏览

iphone - NSUrlCache 磁盘限制?

我正在尝试在服务器上存储大量图像并使用利用AFNetworking的图像缓存功能NSUrlCache,这样应用程序就不需要一直访问服务器,甚至可以在离线时工作。

重要的是图像永远不会过期并永远保持缓存,所以我想知道缓存可以占用多少空间是否有磁盘限制。(例如缓存可能会在达到限制时过期旧图像)谢谢!

0 投票
1 回答
571 浏览

ios - NSURLConnection / AFNetworkingOperation 未使用 NSURLCache

当我使用策略开始请求时,NSURLRequestReturnCacheDataElseLoad我希望从策略中获得结果NSURLCache,无论它有多旧。但是,系统总是尝试到达请求指向的服务器,如果服务器没有应答,则返回错误。

我使用请求的UIImageView类别。AFNetworking

即使直接询问 NSURLCache 将返回一个有效的NSCachedURLResponse.

该应用程序仅在iOS6上运行,所以据我所知,磁盘缓存应该没有问题?!

任何帮助表示赞赏!谢谢!

0 投票
1 回答
1633 浏览

ios - 在 ios 上下载并缓存整个网页

我需要下载整个网页并将其存储在应用程序的文档目录中,并在下次用户访问时从缓存中加载。

无论我搜索多少,我总是以ASIWebPageRequest ..!! 尽管它可以工作,但它非常古老且已被弃用。所以我正在寻找一些替代品。我试图避免它的另一个原因是因为......

它是一个完全重新实现的 URL 加载系统,基于非常低级的结构 (CFNetwork)。因此,随着 Apple 改进其高级库(NSURLConnection、NSCache),ASIHTTP 并没有获得这些进步。

因此,我从 apple 尝试了这个示例代码,它给了我一个NSData我提供给它的 URL。但是,当我尝试将其加载NSDataUIWebViewusingloadData:MIMEType:textEncodingName:baseURL:方法中时,我需要将 mimetype 指定为 "text/html" ,现在网页中的图像和链接不会加载..!

有没有其他方法可以用来实现它..?也许使用NSURLCache..?但如何?是否还有其他好的库可供我使用,或者我是否坚持使用 ASIWebPageRequest..?

仅供参考,我需要下载包含所有 js、css 等的整个网页。

0 投票
1 回答
1753 浏览

ios - 使用 NSURLCache 子类在 IOS 中缓存网页

我继承了 NSURLCache 并覆盖– cachedResponseForRequest:– storeCachedResponse:forRequest:. 我将所有文件存储在应用程序的文档目录中。

现在,问题是,.html 文件在打开时不会加载所有资源(即图像、js 和 css)。我不知道问题出在哪里,因此我在同一个网页上做了一个“页面另存为”,并比较了两个 .html 文件(我从浏览器保存的文件和我缓存的文件。)。

发现浏览器保存的html文件中,所有图片等文件源路径都被替换为本地路径了。。

但是我缓存的html文件仍然有网站的url..

那么我该如何更改它..?或者将网页与所有资源一起保存的正确方法是什么..?

我正在保存所有文件,storeCachedResponse:forRequest:因为它是按原样进行的。那么我是否必须在保存之前对这个 .html 文件进行一些修改,以便它可以正确引用本地文件夹中的所有资源路径??

仅供参考,我不想使用 ASIWebPageRequest (在 ios 上下载并缓存整个网页

//////////// 编辑 ////////////

因此,正如 Edwin Vermeer 所回答的那样,我能够从我的缓存中获取正确的本地文件并返回响应。但看起来, UIWebView 不理解该数据..!这就是在方法中返回响应的cachedResponseForRequest:方式

这就是网页在 webView 上加载的方式..

应用截图

是否有一些不同的方式来返回响应......?顺便说一句,内容或响应都不是零。

请求 url 的一个例子是

其存储的文件路径是: