[Android] Add module for cache control
Robert Stone
git at videolan.org
Thu Dec 5 09:16:49 UTC 2024
vlc-android | branch: master | Robert Stone <rhstone at gmail.com> | Fri Nov 8 11:54:21 2024 -0800| [ac1006298654fe529cc385c124700315675dcc79] | committer: Nicolas Pomepuy
Add module for cache control
> https://code.videolan.org/videolan/vlc-android/commit/ac1006298654fe529cc385c124700315675dcc79
---
application/webserver/build.gradle | 1 +
.../videolan/vlc/webserver/RemoteAccessServer.kt | 27 ++++++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/application/webserver/build.gradle b/application/webserver/build.gradle
index 50f328ebdc..bf3bb105c6 100644
--- a/application/webserver/build.gradle
+++ b/application/webserver/build.gradle
@@ -86,6 +86,7 @@ dependencies {
implementation "io.ktor:ktor-server-netty:$rootProject.ext.ktorVersion"
implementation "io.ktor:ktor-gson:1.6.8"
implementation "io.ktor:ktor-server-websockets:$rootProject.ext.ktorVersion"
+ implementation "io.ktor:ktor-server-caching-headers:$rootProject.ext.ktorVersion"
implementation "io.ktor:ktor-server-cors:$rootProject.ext.ktorVersion"
implementation("io.ktor:ktor-server-auth:$rootProject.ext.ktorVersion")
implementation("io.ktor:ktor-server-partial-content:$rootProject.ext.ktorVersion")
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
index 93bb004dd0..dfe7a6d6b3 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
+++ b/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
@@ -32,9 +32,12 @@ import android.net.Uri
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
+import io.ktor.http.CacheControl
+import io.ktor.http.ContentType
import io.ktor.http.HttpHeaders
import io.ktor.http.HttpMethod
import io.ktor.http.HttpStatusCode
+import io.ktor.http.content.CachingOptions
import io.ktor.server.application.ApplicationCall
import io.ktor.server.application.ApplicationStarted
import io.ktor.server.application.ApplicationStopped
@@ -48,6 +51,7 @@ import io.ktor.server.engine.embeddedServer
import io.ktor.server.engine.sslConnector
import io.ktor.server.netty.Netty
import io.ktor.server.netty.NettyApplicationEngine
+import io.ktor.server.plugins.cachingheaders.CachingHeaders
import io.ktor.server.plugins.callloging.CallLogging
import io.ktor.server.plugins.cors.routing.CORS
import io.ktor.server.plugins.origin
@@ -478,6 +482,29 @@ class RemoteAccessServer(private val context: Context) : PlaybackService.Callbac
maxFrameSize = Long.MAX_VALUE
masking = false
}
+ install(CachingHeaders) {
+ options { _, content ->
+ when (content.contentType?.withoutParameters()) {
+ ContentType.Text.Plain,
+ ContentType.Application.Json -> {
+ CachingOptions(CacheControl.NoStore(CacheControl.Visibility.Private))
+ }
+ ContentType.Image.GIF,
+ ContentType.Image.PNG,
+ ContentType.Image.SVG,
+ ContentType.Image.JPEG,
+ ContentType.Image.XIcon,
+ ContentType.Text.CSS,
+ ContentType.Text.Xml,
+ ContentType.Text.Html,
+ ContentType.Text.JavaScript,
+ ContentType.Application.JavaScript -> {
+ CachingOptions(CacheControl.MaxAge(maxAgeSeconds = 86400, visibility = CacheControl.Visibility.Private))
+ }
+ else -> null
+ }
+ }
+ }
install(CORS) {
allowMethod(HttpMethod.Options)
allowMethod(HttpMethod.Post)
More information about the Android
mailing list