什么是OkHttp客户端的最佳/较少错误倾向的缓存大小(用于exoplayer)

的DEP:

  • Kotlin 1.0.3
  • Exoplayer r1.5.9
  • 改造2.1.0
  • okhttp 3.4.1

我试图为我的视频播放项目设置缓存(每个视频20秒的视频列表),我想知道是否有任何问题,如果我设置缓存OkHttp

val cacheSize: Long = 1000 * 1024 * 1024 // 1000 MB <-------- HERE val cookieManager = CookieManager() cookieManager.setCookiePolicy(java.net.CookiePolicy.ACCEPT_ORIGINAL_SERVER) return OkHttpClient.Builder() .cache(Cache(File(cacheDir, "responses"), cacheSize)) .cookieJar(JavaNetCookieJar(cookieManager)) 
  • 如果我尝试使用1000 MB缓存,可能会有例外情况
  • 如何在不出现问题的情况下为我的应用程序找到最佳的缓存大小?

  1. 看看缓存类,它不会预先分配文件,所以你的1000MB将通过没有任何异常,但是这并不意味着它将工作,如果设备甚至没有那种空的空间,意思是 …

  2. 保存文件时空间不足时,会根据LRU清除文件。 一个

  3. 没有人可以回答你的“最佳”缓存大小,因为它取决于你的用例。 你说“没有问题”; 你害怕什么问题? 一旦一个视频文件已经被缓存了,可能会改变吗? 它会多久改变一次? 视频文件的平均大小是多少? 对于分段文件(例如HLS),是否要继续使用默认的LRU?

  4. 例如:假设你正在做HLS,每个块都是500k,所以平均你可以保存2000个块。

a:来自okhttp3的DiskLruCache.java(注意它可能会改变超时,只是在链接被破坏的时候搜索它)