【问题标题】:URLConnection.setUseCaches(true) - when will cache expire?URLConnection.setUseCaches(true) - 缓存什么时候过期?
【发布时间】:2012-04-03 08:46:01
【问题描述】:

我有一个简单的问题:如果我在从 Web 加载内容时使用 URLConnection.setUseCaches(true),那么这些缓存文件什么时候会过期?我正在为 android 开发,但它几乎没有任何区别......那么缓存文件何时会从 SD 卡中删除?

【问题讨论】:

    标签: android caching urlconnection cache-expiration


    【解决方案1】:

    如果连接上的 UseCaches 标志为 true,则允许连接使用它可以使用的任何缓存。如果 false,缓存将被忽略。默认值来自 DefaultUseCaches,默认为 true。**因此,要使用缓存,您需要自己实现一个。将 UseCaches 标志设置为 true,让您​​使用可用的缓存。但不实现任何缓存自行缓存..

    【讨论】:

      【解决方案2】:

      This问题的回答表明URLConnection.setUseCaches(true)没有效果。

      然后 Neil 描述了存储在内部(手机内存)的 Android 应用程序如何也可以缓存内容,保存在 /data/data/packagename/cache 中。为了回答您最初的问题但应用到此功能,系统最终会控制这些区域,尽管您应该照看自己的内容,如API 中所述。

      【讨论】:

      • 如果我保存所有需要getExternalCacheDir()的文件并使用URLConnection.setUseCaches(true),那么URLConnection怎么知道哪个文件对应哪个url呢?还是我需要手动加载这些文件(而不是通过 URLConnection)?
      • 我认为你需要手动做一些事情——一个快速的想法可能是使用 URL 的 hashCode() 命名文件,并首先检查它们是否存在;如果没有,则回退到 URLConnection。
      • 另外要说的是,如果你使用的是 WebView,它有一些内置的缓存选项——缓存最终在同一个地方,但在某种程度上是为你管理的——所以你可能会发现调查它比重新发明轮子更容易。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多