什么是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
缓存,可能会有例外情况 ? - 如何在不出现问题的情况下为我的应用程序找到最佳的缓存大小?
-
看看缓存类,它不会预先分配文件,所以你的1000MB将通过没有任何异常,但是这并不意味着它将工作,如果设备甚至没有那种空的空间,意思是 …
-
保存文件时空间不足时,会根据LRU清除文件。 一个
-
没有人可以回答你的“最佳”缓存大小,因为它取决于你的用例。 你说“没有问题”; 你害怕什么问题? 一旦一个视频文件已经被缓存了,可能会改变吗? 它会多久改变一次? 视频文件的平均大小是多少? 对于分段文件(例如HLS),是否要继续使用默认的LRU?
-
例如:假设你正在做HLS,每个块都是500k,所以平均你可以保存2000个块。
a:来自okhttp3的DiskLruCache.java(注意它可能会改变超时,只是在链接被破坏的时候搜索它)