问题标签 [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.
iphone - iOS 中缓存的 NSURLRequest 内存大小
您为缓存(内存)指定的 memorySize 是映射到磁盘还是正在使用的实际内存?
ios - 在 iOS 上,如果 diskPath:nil,NSURLCache 缓存存储在哪里?
我遇到过如下代码:
问题是当 diskPath 被传递为零时,我无法找到预期的行为。 NSURLCache 文档没有明确描述这种情况,我也无法通过自己的测试弄清楚。
缓存存储在哪里?还是该代码高于错误?
谢谢。
caching - NSURLCache 在 iOS5 上提供不一致的结果,看似随机
我刚刚花了很长时间在 NSURLCache 上大喊大叫,所以我提供一些建议,希望其他人可以避免我的不幸。
这一切都以合理的方式开始。我的新应用项目只针对 iOS 5 及更高版本,所以我认为我可以利用新的 NSURLCache 实现来满足我所有的 Web 缓存需求。我需要一个 NSURLCache 的自定义子类来处理一些特殊任务,但这一切似乎都得到了 API 的有用支持。快速阅读文档,我开始参加比赛:
我认为 8mb 的缓存可以开始,我会用更大的磁盘缓存来支持它,这样我们就可以在本地提供更多更大的图像。我连接了其余的网络代码以使用 NSURLConnection (实际上,我使用了 MKNetworkKit,但结果证明这无关紧要),并期待我的缓存中有很棒的东西。果然,所有应该被缓存的请求都尽职尽责地保存到缓存中,并且当响应从缓存中得到服务时,它们会尽职尽责地快速返回。这是《彭赞斯海盗》的常规制作,在我的网络堆栈中飞来飞去的职责如此之多。
除了没有加起来。可以从缓存中提供服务的请求仍然通过网络发送出去。除非他们不是。缓存是否实际用于服务请求似乎完全随机且断断续续。我沮丧地扯下头发,从字面上挖掘一切,试图弄清楚发生了什么。我构建测试应用程序,在各处设置断点,撕开数据包跟踪,阅读互联网上提到 NSURLCache 的每一个字,试验缓存控制标头,注释掉代码,绕过我的子类,甚至煞费苦心地追踪NSURLCache 及其 CFNetworking 朋友的程序集,试图了解其背后的神秘逻辑。我极大地提高了我对 ARM 和 Objective-C 调用约定的了解,并学习了一些关于低级调试的知识,但在真正弄清楚发生了什么方面却一无所获。整件事感觉更像是 Iolanthe 的噩梦之歌比起海贼王的良性独裁统治,我几乎快要把它全部扔掉了。
TL/DR 版本: NSURLCache 似乎正在工作,但随机不返回缓存的结果,即使它有可用的结果。
ios - NSURLCache 和 .svg 文件
我在本地缓存了 UIWebView 所需的一些较大的文件,并且有一个 NSURLCache 的子类和一个自定义实现来帮助服务这些文件。
我正在使用它来劫持请求并返回本地存储的文件副本(主要是 t
cachedResponseForRequest:request 的主体(没有样板)本质上是:
这适用于除单个 svg 图像之外的所有缓存内容。当尝试加载 svg 图像时,它将通过 cachedResponseForRequest:request 进行,构建一个 NSCachedURLResponse 对象并返回它。
然而,应用程序要做的下一件事是从远程服务器下载文件,然后从缓存中提供任何后续请求。我们不想远程下载文件,因为它比较大并且影响性能。
NSURLCache 处理 .svg 文件是否与其他文件类型不同?
ios - 如何判断 NSURLConnection 是否缓存了某个图片?
我将如何确定 UIImage 是否已经被 NSURLConnection 缓存?
例子:
显然上面的代码不起作用,但你明白了......
谢谢!
objective-c - monotouch/objective c iphone 5.x 如何使用 NSURLCache 缓存网页?
我发现了与我的 iphone 类似的线程: NSURLCache on disk。我想做的基本上是一样的:将网页存储在我的 iphone 模拟器上,以便我可以离线使用它们(将它们加载到 webview)。当我在线时,我正在下载/缓存它们,当我离线时,我使用缓存版本,以便我可以在离线时修改它们。
从我读到的 5.0 iPhone 允许在磁盘上缓存。我的问题是,如何使用 NSURLCache 来做到这一点?
我浏览了 NSURLCache 类的一些文档,但找不到任何具体的答案或示例。
ios - NSURLCache 是否删除过期的缓存响应?
Apple 从 iOS 5.0 开始支持磁盘缓存。我以前使用的是家庭解决方案,但我正在测试NSURLCache
希望最终使用它,因为我过去曾看到过奇怪的行为。
我遇到的一个更令人困惑的问题是cachedResponseForRequest:
返回过期的请求。我一直在通过在我正在使用的 iPhone 上设置时钟来进行测试。解析标头清楚地表明设备时间早于到期日期。
我愿意接受可能存在定期修剪过期请求的后台任务。我已经进行了测试,实际上我在等待查看请求是否“自然”过期,但事实并非如此。
Apple 是否未能正确实现缓存失效?
我正在使用Charles代理进行测试。这是一个棘手的问题,我不羡慕任何必须实现缓存失效的人,但iOS现在应该是一个成熟的SDK。
ios - NSURLCache 不支持 file://?
我想[NSURL fileURLWithPath:@"2.html"]
在UIWebView
使用中加载NSURLCache
,执行 cachedResponseForRequest: 函数并返回一个NSCachedURLResponse
在 http:// 方案中正确执行的对象。
但UIWebView
最终加载失败。我错过了一些可选的吗?
我想UIWebView
在压缩文件中使用加载 html 文件,并且我不希望将文件解压缩到磁盘。有什么建议吗?
iphone - iPhone 上是否有可用的磁盘缓存?
我找到了一个改进 iPhone 缓存策略的项目。因为他们确信:“在 iPhone OS 上,Apple 确实出于未知原因删除了磁盘缓存支持”
但是,我不这么认为,请参阅详细信息: https ://github.com/rs/SDURLCache/issues/39
我发现 UIWebView 应用程序的文件夹“Library/Catches/com.company.appname/”上有两个 db 文件:
应用程序缓存.db、缓存.db
并尝试那些 sql
“select * from CacheResourceData”,打开 ApplicationCache.db 后
Cache.db 上的“从 cfurl_cache_receiver_data 中选择 *”
两者都是磁盘上的缓存文件内容
所以现在我很困惑,谁能告诉我真相和证据?
iphone - 在 iOS 上,使用 NSURLConnection 时如何缓存更大的文件(1MB)?
在 iOS 上,我正在尝试NSURLConnection
从 Web 服务器加载数据,这些数据只是 PNG 文件。
所有文件都将被缓存,除了一个大小为 1,173,084 字节的文件(大约 1MB)。
我正在循环 6 个文件:pic1.png、pic2.png、... 3、4、5、6,然后返回 1、2、3、... 文件大小分别为 1MB、650kb、450kb 和一些较小的文件。
它正在 iPad 模拟器上进行测试,因此内存不是问题。
已经完成了以下工作viewDidLoad
:
并且NSURLConnection
创建于touchesBegan
:
缓存大小为 15MB 和 20MB,远大于总文件大小(约 3.2MB)。如果下载几乎是瞬间完成,我可以看到文件被缓存,而 1MB 的文件经历了很多connection:didReceiveData
,最后是connectionDidFinishLoading
.