问题标签 [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 回答
966 浏览

objective-c - URLCache - iPhone SDK

我需要一些帮助来使用 NSURLCache 下载一个简单的文件。它需要保存在应用程序的 Documents 文件夹中。我看过苹果提供的 URLCache 示例,但我发现它没有用,因为它是一个正在显示的图像。此外,修改日期还有一些复杂的代码。当应用程序打开时,我实际上需要一些东西,它将开始下载过程。有人可以指导我完成任何文件的下载过程吗?

谢谢

凯文

0 投票
1 回答
2059 浏览

iphone - 使用 SDURLCache(NSURLCache 的子类)时的内存泄漏

我正在使用Olivier Poitrey 的 SDURLCacheNSURLCache (github 链接)作为在 iPhone 应用程序中启用磁盘缓存的替代方法。

它工作得很好,但奇怪的NSHTTPURLResponseInternal是在返回磁盘缓存对象时泄漏(从内存返回对象或找不到对象时没有泄漏)。以下代码片段显示了 SDURLCache 如何从磁盘读取数据:

每个泄漏的堆栈跟踪都包含对代码NSHTTPURLResponseInternal的两个引用。SDURLCache

第一条指向线[accesses setObject:[NSDate date] forKey:cacheKey];。第二点,也是最新的点如下:

有没有人遇到过这个问题?关于解决方案的任何想法?让我知道是否应该发布更多代码示例。

干杯。

更新:来自代码作者Olivier Poitrey的推文

我正计划删除 NSURLCache 继承性并处理内存缓存,它可能会修复泄漏

0 投票
1 回答
1622 浏览

iphone - UIWebView 和 NSUrlCache

我有一个 NSURLCache,它只记录 cachedResponseForRequest 和 storeCachedResponse 调用。

似乎 UIWebView 会为每个请求调用 cachedResponseForRequest ,但 storeCachedResponse 只会为顶级页面调用,即不会为任何 css/js/etc 调用。在 html 中指定。

有什么理由可以(不)发生这种情况吗?

我在 3.2 ipad 模拟器和设备上观察到这一点。

0 投票
0 回答
3361 浏览

image - 覆盖 NSURLCache 的 cachedResponseForRequest 以使用 Three20 缓存 UIWebView 资产

我需要缓存进入 web 视图的 web 来源图像(即不是捆绑来源)。通常我只是请求图像并将其转换为 base-64 并将其粘贴在 HTML 中,但如果我有 100 个图像在线我不能完全做到这一点。

所以我搜索了一下,找到了一种通过子类化NSURLCache和覆盖来获取图像请求的方法cachedResponseForRequest。我的代码如下。

我能够很好地完成请求,我可以取回数据并将其打印出来,我从数据中制作了一个 UIImage 并获得了它的大小以知道它的definitely存在等等。但是当我返回它cachedResponseForRequest本身时,看看在 处UIWebView,它只显示丢失的图像。我为此苦恼了一天,想不通。我看了一个又一个的例子,没有雪茄。

谁能帮我解决这个问题?快把我逼疯了。。

这是我的NSURLCache子类的 .m 文件的内容。GimageData是一个实例变量,用于存储当前接收到的图像数据。

只是让你知道,我搜索/替换 http___ 到 http:// 的原因是 http:// 链接显然没有被这种方法拾取,所以我让链接看起来像是在里面捆绑包然后我恢复 URL 以进行检索。

0 投票
3 回答
430 浏览

iphone - iPhone:从检索到的网页的磁盘缓存中提取文本

我的 iPhone 应用程序有一个信息页面,其中包含一个 UIWebView,我已将其指向我网站的信息页面:

但是,每次用户加载应用程序时,他们都会看到一个空白屏幕,直到它获取数据。情况不妙。

显示最后加载的页面会好得多,同时尝试在后台获取新版本。但我看不出如何干净地做到这一点。有人可以让我开始吗?

第二个问题:对于 iPhone 来说,在 UIWebView 中显示这个网页是不切实际的,因为网页包含三个窗格;整个事情就是不适合。我真的很想从页面中提取文本。有什么干净的方法可以做到这一点吗?我可以指定我只想下载主体吗?

我猜整个页面会作为单个字符串返回,所以如果我在文本周围放置几个自制标签,这将简化手动提取文本......

0 投票
0 回答
705 浏览

objective-c - NSURLCache 绕过 HTML5 视频标签

我有一个使用 UIWebView 的 NSURLCache 后代。我在 WebView 中加载了一个网页,并且可以拦截它发出的所有 HTTP 请求(并在本地缓存到文档目录)。这适用于内联图像、javascript 引用和 css 引用以及 CSS 中的所有 url 调用。但是,这不会从 HTML5 视频标签中接听电话....

我留下了页面所需的所有文件,除了视频,这在尝试离线查看 webview(缓存后)时会导致我出现问题。

有谁知道为什么 NSURLCache 不适用于 VIDEO 标签和/或我如何才能让它工作!??!?!

0 投票
0 回答
3713 浏览

iphone - iOS拦截HTTP图像请求并用本地图像替换

我正在编写一个将我们的一个网站加载到 UIWebView 中的应用程序。为了加快加载时间,我创建了 NSURLCache 的子类,它检查 NSDictionary 以查看图像是否在本地存在,如果存在则使用本地图像而不是请求在线版本。我有一个问题,一些图像具有相同的名称,但在不同的文件夹中。这是我的 NSDictionary:

在可能的应用程序中,我的图像在与在线相同的文件夹结构中,所以我如何告诉“https://www.xxx.com/content/star-bar/1-Star/1-Stars.png”的请求使用正确的图像而不是“https://www.xxx.com/content/star-bar/2-Star/1-Stars.png”的图像?

我希望这很清楚!

0 投票
0 回答
684 浏览

ios4 - NSURLCache 在 iOS 4 中是如何工作的?

当我学习NSURLCache文档时,我找不到很多重要的注释。我发现网络上的许多主题都抱怨使用NSURLCache的NSURLConnection存在内存泄漏。当我尝试为 iOS 4.3 编写一些应用程序时,我发现MSURLCache有一些奇怪的行为。

application:didFinishLaunchingWithOptions:我设置了内存容量为 10MB的NSURLCache实例,使用NSURLRequestUseProtocolCachePolicy 初始化 NSURLRequest我无法在我的NSURLConnection委托中收到connection:willCacheResponse:消息。当我检查应用程序不同点的内存容量时,它是 0MB。为什么?可能苹果通过将NSURLCache内存容量设置为 0 来修复一些内存泄漏?我创建了自定义NSURLCache并通过以下方式覆盖了 setMemoryCapacity:方法:

然后我开始调试。我的应用程序中有一些输入文本,用户在其中放置了一些 url。新的setMemoryCapacity:方法已被调用两次:在我的应用程序委托中,当我将容量设置为 10MB 和(非常有趣)当用户将焦点设置为文本输入时(memoryCapacity的参数为 0,并且我在日志中收到“此处为零”字符串)。之后,我收到了connection:willCacheResponse:NSURLConnection委托的消息。这很奇怪。我不明白为什么。我在手册中找不到关于此的内容。你有什么想法吗?

0 投票
2 回答
1921 浏览

ios - 清除本地文件的 webviews 缓存

我发现了一些类似的帖子,但它们似乎对我正在做的事情没有任何影响。我有一个UIWebView用于在我的包中显示本地内容的工具。具体来说,我正在显示一个 docx 文件。用户应该很少看这个文档,而且我的应用程序内存很紧,所以我想做的是防止UIWebView缓存文档。另一个可行的选择是在用户离开视图时清除缓存。每次用户进入视图时都必须从头开始加载它,我完全可以。

我像这样加载文档:

在我尝试停止缓存时,我尝试过:

和:

和:

我也尝试设置 web-views 缓存策略,但这似乎只是消耗内存,因为当我释放 webview 时,仍然有内存留下。当我重新进入并重新分配时,它没有使用相同的内存。

我不认为这是正确的方向。这些都被标记为阻止网页缓存的方法,但它们似乎对本地文件没有影响。我真的不知道还有什么可以和这个一起去的。如果有人知道如何强制清除缓存或首先阻止缓存,我将不胜感激。

0 投票
1 回答
1339 浏览

iphone - 如何在 iOS 中设置缓存模型(用于 NSURLCache 和 UIWebView)?

我想知道这是否是iOS框架中的错误。NSURLCache setMemoryCapacity: 方法被调用为 0 并使其停止缓存。

我在展示 UIWebView 时看到了这种情况。我正在使用 SDURLCache 并覆盖 setMemoryCapacity: 如果传入的 memoryCapacity 为零,则在此处放置一个断点,以便我可以看到谁在清除它:

发布某种偏好更改?我在 WebPreferences.h 中看到 cacheModel 的东西,它只是 Mac OS X SDK :-(

所以,理想情况下,我们有办法设置缓存策略,但我不知道该怎么做。我不明白为什么它会选择一个没有缓存的缓存模型。

任何人都知道如何将 iOS 应用程序的缓存模型设置为更像 WebCacheModelPrimaryWebBrowser 的东西?

这类似于NSURLCache 内存大小为零,但我希望通过提供更多详细信息,我可能会得到答案......