ahe*_*ang 9 iphone objective-c uiwebview ipad ios
似乎UIWebView并不总是storeCachedResponse:forRequest:在加载资源时调用.有谁知道为什么?我试图通过使用缓存图像-[NSURLCache storeCachedResponse:forRequest:],它完成大部分工作,但在某些情况下UIWebView,不会在页面加载上调用此方法,其中实际上有图像.
MrG*_*mez 11
回答赏金提供者的查询:
我也看到了这个小文件(100字节).webview也无法调用
cachedResponseForRequest:
尽管Apple的文档另有说明,但
NSURLCache在iOS上根本不进行任何磁盘(闪存)缓存.您可以子类化NSURLCache以更改获取和存储操作的行为以使用磁盘(如同SDURLCache),但由于以下严格限制了缓存的使用和实现方式,这不会像您期望的那样好用:
NSURLConnection甚至没有调用storeCachedResponse:forRequest:大约50KB的文件(确切地说> = 52428字节).这使得子类NSURLCache对我们的使用毫无意义(200KB图像),因为它甚至不会进入缓存.因此,我们必须在上面的级别手动添加缓存NSURLConnection.即使
storeCachedResponse:forRequest:手动调用NSURLCache的内置函数,它也只会将响应存储在内存中,如果它小于大约180KB.我通过手动调用storeCachedResponse测试了这一点,并且发现currentMemoryUsage对于大约180KB以上的数据长度,之前/之后 没有改变.所以我们也必须编写自己的LRU内存缓存.
(强调我的.)
这似乎是被召唤出来的行为的原因.正如当前接受的答案指出的那样,ASIHTTPRequest是此行为的预期解决方法.
但是,请注意页面顶部的警告:
请注意,我不再使用此库 - 您可能需要考虑使用其他新项目.:)
您应该考虑依赖受支持的库,或者,如果您愿意,一旦它成为您的代码的基础,就会回馈此库.
如此处所述, 如果文件大小超过 50kb(52428 字节),则NSURLConnection不会调用。
尝试ASIHTTPRequest缓存。storeCachedResponse:forRequest:
| 归档时间: |
|
| 查看次数: |
5275 次 |
| 最近记录: |