问题标签 [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 投票
2 回答
1148 浏览

objective-c - NSURLCache 使用什么缓存算法?

Apple 的NSURLCache课程有不错的文档,但没有说明它使用什么缓存算法。是 LRU、LFU 还是完全其他的东西?

我正在为 iPad 开发,并希望通过使用(默认似乎是 0) 来利用NSURLCache的磁盘缓存功能来缓存照片。[NSURLCache setDiskCapacity]这个值的上限是多少?

0 投票
4 回答
3771 浏览

objective-c - iOS 上的 NSURLConnection 不会尝试缓存大于 50KB 的对象

尽管 Apple 的文档另有说明NSURLCache但在 iOS 上根本不做任何磁盘(闪存)缓存。您可以子类NSURLCache化以更改 fetch 和 store 操作的行为以使用磁盘(就像这样SDURLCache做),但是由于以下对缓存的使用和实现方式的严重限制,这不会像您期望的那样工作:

  • NSURLConnection甚至不需要storeCachedResponse:forRequest:超过大约 50KB 的文件(确切地说,>= 52428 字节)。这使得子类NSURLCache化对我们的使用毫无意义(200KB 图像),因为它甚至不会进入缓存。因此,我们必须在上一级手动添加缓存NSURLConnection
  • 即使手动调用 NSURLCache 的内置函数storeCachedResponse:forRequest:,它也只会在小于 180KB 的情况下将响应存储在内存中。我通过手动调用 storeCachedResponse 对此进行了测试,发现之前/之后currentMemoryUsage对于超过 180KB 的数据长度没有改变。所以我们也必须编写自己的 LRU 内存缓存。

有没有其他人注意到这些问题?还是我缺少什么?

仅供参考,我在模拟器和 iPad 2 上运行 iOS 4.3。

0 投票
0 回答
456 浏览

ios - MPMoviePlayerController :以 10 秒预加载和缓存播放渐进式视频以供离线使用

我可以使用 URLCACHE 完全下载渐进式电影,然后我可以播放。

但是,我想在部分下载后开始播放电影,并继续将其完全下载到缓存文件夹中以供离线使用。

有什么想法/例子吗?

0 投票
1 回答
883 浏览

ios - 加载相同的 URL 后不会调用 cachedResponseForRequest

NSURLCache对. cachedResponseForRequest_ UIWebView它在第一次完美运行时,当 URL 加载到 . 时UIWebView,它会拦截所有内容(css、jpg 等)。但是当我尝试加载相同的 URL(例如 index.html)时,cachedResponseForRequest不会调用该方法。如果那时我尝试使用不同的 URL,它会再次完美运行。

我试图将请求的 cachePolicy 修改为每个可能的值,但没有任何帮助。

0 投票
1 回答
1853 浏览

uiwebview - iOS 5 中 NSURLCache 的磁盘存储?

我试图在 UIWebview 上显示缓存的 php/javascript 内容有一段时间了,但我还没有成功。它可以使用静态内容运行,但是一旦我尝试使用 javascript 加载动态内容,它就会失败。

我尝试了几种潜在的解决方案:(ASIHTTPRequest,AFCache ...)但它们似乎都不适合我。我总是一次又一次地撞到墙上,似乎没有一种简单的方法可以完成这项工作。

昨天我在模拟器上玩了一下,发现一个名为 Cache.db 的文件位于:$(HOME_DIRECTORY)/Library/Caches/(app_bundle_id)/(这里的架构:https ://gist.github.com/1305158 )

我认为他们在 iOS5 中带回了磁盘缓存存储,但我找不到使用它的方法。每次我尝试它时,它只显示基本的 html(没有加载从中引用的 javascript 文件或图像),无论我使用什么缓存策略。但是,javascript 和图像文件被正确缓存,因为我在查询数据库文件时可以看到它们。

有人知道如何利用这个新功能吗?有谁知道如何引用存储在缓存中的那些 js 文件?

谢谢

0 投票
5 回答
19556 浏览

ios - 清除 NSURLConnection 缓存

有没有办法清除 NSURLConnection 缓存?

我用它来下载一些字符串,但即使我从我的服务器更改了它,我仍然得到相同的字符串。

0 投票
1 回答
916 浏览

image - 有没有办法从 NSURLCache 中检索图像?

当 UIWebView 以正常方式加载请求时,它很可能会缓存它,包括它的图像。我希望人们选择要存储在他们的相机胶卷中的图像。

此时我可以检测到用户在 UIWebView 中点击的图像的 URL。我无知的答案是使用 NSURLConnection 下载图像,但感觉不对,因为图像已经下载并且可能已经存储在缓存中。那么有没有办法检查图像是否已经被缓存并从他们那里获取它而不是下载图像两次?

我试图像这样得到一个 NSCachedURLResponse :

但是“响应”始终为零,这是否意味着它不会被缓存?


编辑:

在使用请求时:

它确实返回一个有效的响应。但是,如果我在自己创建的请求中使用相同的 URL,它会再次返回 nil,我很困惑。

0 投票
1 回答
169 浏览

ios - 使用 UIWebView 时让 POST 始终通过 NSUrlCache 的问题

按照此处说明的过程(http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/),我可以使用 UIWebView 和一个 NSURLCache 派生对象。

我遇到的问题是,对于某些页面,永远不会为 POST 请求调用 cachedResponseForRequest() 函数。

有没有人有任何经验让这种方法能够捕获所有 POST 请求,或者有任何原因导致 POST 有时只能被捕获?

谢谢。

0 投票
2 回答
1659 浏览

iphone - 从 iPhone 中的服务器在 UITableView 中异步显示图像

当我尝试使用 NSURL 在 UITableView 中获取图像时,
UIImage image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://mysite.com/mobile/abc.jpg]]];
我的应用程序会冻结,直到图像加载。此外,当我滚动表格时,它再次从服务器获取图像并滚动卡住了一段时间。
我知道这是因为从服务器同步下载图像而发生的。
有什么解决方案可以让我从服务器异步下载图像并将其存储在本地或缓存中,这样当表格滚动时它就不会再次从服务器获取图像。

谢谢

0 投票
1 回答
1229 浏览

ios4 - 设备离线时使用 NSURLConnection 缓存

在 NSOperation 子类中,我使用以下代码从我们的服务器下载 xml 文件,然后再对其进行解析:

我第二次发出相同请求时,服务器返回 HTTP 304,缓存的响应数据存储在receivedData. 到目前为止,一切都很好。

我的问题:设备离线时是否可以获得相同的缓存响应