【问题标题】:UIWebview caching to diskUIWebview 缓存到磁盘
【发布时间】:2013-05-16 21:58:26
【问题描述】:

我有一个简单的 iOS 应用程序,它可以加载链接列表并在 UIWebview 中显示它们。该应用程序安装后约为 2MB。在点击了一些链接后,我注意到文档和数据的磁盘使用量跃升至 10MB 以上。几天过去了,我注意到磁盘使用量继续增长。我的问题是,在 iOS 上管理磁盘存储的最佳方式是什么?

这个应用程序的目标是最小化并且不占用大量资源,但我担心它会继续消耗越来越多的磁盘空间,我假设是缓存的 Web 内容。我应该/有没有办法设置缓存大小?还是 iOS 只是为我处理这个问题并最终删除旧数据?

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    不要过早优化!磁盘上的资源不会对 RAM 内存造成压力,所以不用担心。如果系统正在为您管理缓存,您无法猜测它会做什么。如果它需要清理空间,它大概会清理空间。别担心,开心就好。

    现在,话虽如此,您确实可以控制 NSURLRequest 缓存策略。查看 NSURLRequest 文档以了解更多信息。

    【讨论】:

    • 感谢您的回复。不过,我担心的是 iOS 是否会正确处理磁盘缓存。我刚刚打印了以下,我不明白为什么使用>容量:(lldb) po (int)[[NSURLCache sharedURLCache] currentDiskUsage] $0 = 23023616 [no Objective-C description available] (lldb) p (int)[[NSURLCache sharedURLCache] diskCapacity] (int) $1 = 20971520
    • 经过一些额外的测试,似乎缓存在超出容量后被修剪。因此,超出容量并期望下一次受到攻击时,操作系统将开始删除东西似乎是正常的。这似乎正确吗?如果是这样,那么我认为你是对的,我不需要搞砸它。
    • 这就是自动维护的缓存。它填充和修剪,填充和修剪。别担心,开心就好。我想我已经说过了。 :)
    • 不过,您能够获得实际数字确实有点酷。
    【解决方案2】:

    指定缓存大小:

    int cacheSizeMemory = 8 * 1024 * 1024; // 8MB
    int cacheSizeDisk = 32 * 1024 * 1024; // 32MB
    NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
    [NSURLCache setSharedURLCache:sharedCache];
    

    删除所有存储的缓存 URL 响应:

    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    

    希望对你有用!

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2015-05-22
      相关资源
      最近更新 更多