【问题标题】:preload NSURLCache with diskPath location to cache files使用 diskPath 位置预加载 NSURLCache 以缓存文件
【发布时间】:2013-10-12 19:49:23
【问题描述】:

寻找一些关于这是否可能的见解。我正在尝试使用 Cache.DB 预加载我的 NSURLCache,该 Cache.DB 已经填充了来自 uiwebview 的缓存。我不明白为什么这是不可能的,因为Apple documentation 声明 diskPath:

“在 iOS 中,path 是应用程序默认缓存目录的子目录的名称,用于存储磁盘缓存(如果不存在则创建子目录)。”

所以我所做的是将整个 Cache 文件夹作为引用文件夹复制到我的应用程序包中,并使用下面代码中的路径。但是,我无法提取缓存。我打印出来的缓存文件的路径位置是正确的。有什么想法吗?

另外请不要提及EVURLCache我已经调查过了。

NSString *cacheDir = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Caches"

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
                                                     diskCapacity:20 * 1024 * 1024
                                                         diskPath:cacheDir;

[NSURLCache setSharedURLCache:URLCache];

【问题讨论】:

    标签: ios caching uiwebview nsurlcache


    【解决方案1】:

    覆盖 NSURLCache 并将你的设置为默认缓存。网络视图尊重这一点,您的课程显然可以“预先填满”,或者更确切地说是在本地获取资源

    无需预加载。

    另外,您不会弄乱“私有文件格式/磁盘布局”/文件夹结构'

    【讨论】:

    • 这种方法是否会禁止对您想要“预加载”的项目之外的其他非相关项目进行任何进一步的缓存?意思是,如果我们使用它来“预加载”某些东西,它是否仍然能够在其他 webview 等中缓存其他东西?谢谢
    • 在将子类设置为共享缓存之前。保存旧的并根据 webview 设置并重置共享缓存
    • 谢谢。类似的问题:它会阻止在 same webview 中缓存其他内容吗?
    • 你最理想的做法是实现你的 NSURLCache 子类,以便在你无法处理的情况下将所有请求转发给 super 。这样一来,替换率就会下降
    • 不重置共享缓存。只需使用它并为其添加额外的功能(如果你愿意:))
    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2014-09-27
    • 2011-10-11
    • 2014-11-17
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多