From 2e23167e941685bf2d08fa87cd4953dcf1895e95 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 24 Jun 2023 19:03:16 +0800 Subject: [PATCH] Enable httpcache for cronet --- .../hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt | 7 ++++--- app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt index 75c77612f..de8bc288d 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt @@ -5,6 +5,7 @@ import io.ktor.utils.io.pool.DirectByteBufferPool import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine +import okio.Path.Companion.toOkioPath import org.chromium.net.CronetEngine import org.chromium.net.CronetException import org.chromium.net.UrlRequest @@ -18,10 +19,10 @@ import kotlin.coroutines.resumeWithException private val pool = DirectByteBufferPool(32) val cronetHttpClient: CronetEngine = CronetEngine.Builder(appCtx).apply { - enableHttp2(true) enableBrotli(true) - enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISABLED, 0) - enableQuic(true) + val cache = (appCtx.cacheDir.toOkioPath() / "http_cache").toFile().apply { mkdirs() } + setStoragePath(cache.absolutePath) + enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 100 * 1024) }.build() val cronetHttpClientExecutor = EhApplication.nonCacheOkHttpClient.dispatcher.executorService diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt index 145de663c..c916fb65b 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt @@ -132,6 +132,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { cronetRequest(url) { referer?.let { addHeader("Referer", it) } + disableCache() }.execute { info -> val headers = info.allHeaders val type = headers["Content-Type"]?.first()?.toMediaType()?.subtype ?: "jpg"