Server Plugin
條件式標頭
所需依賴項:io.ktor:ktor-server-conditional-headers
程式碼範例: conditional-headers
Native server 支援: ✅ Ktor 支援 Kotlin/Native,並允許您在沒有額外運行時或虛擬機器的情況下運行伺服器。
ConditionalHeaders 外掛程式可避免在內容自上次請求後未發生變化時發送其內容主體。這是透過使用以下標頭來實現的:
Last-Modified回應標頭包含資源修改時間。例如,如果用戶端請求包含If-Modified-Since值,Ktor 將僅在資源於給定日期之後被修改時才發送完整回應。請注意,對於靜態檔案,Ktor 會在安裝ConditionalHeaders後自動附加Last-Modified標頭。Etag回應標頭是特定資源版本的一個識別碼。例如,如果用戶端請求包含If-None-Match值,則當此值與Etag匹配時,Ktor 將不會發送完整回應。您可以在配置ConditionalHeaders時指定Etag值。
添加依賴項
要使用 ConditionalHeaders,您需要在建置腳本中包含 ktor-server-conditional-headers artifact:
Kotlin
Groovy
XML
安裝 ConditionalHeaders
要將 ConditionalHeaders 外掛程式安裝到應用程式中, 請將其傳遞給指定
模組
中的 模組允許您透過分組路由來組織您的應用程式。
install 函數。 以下程式碼片段展示了如何安裝 ConditionalHeaders ... - ... 在
embeddedServer函數呼叫內部。 - ... 在明確定義的
module內部,該module是Application類別的一個擴充函數。
kotlin
kotlin
ConditionalHeaders 外掛程式也可以安裝到特定路由。 如果您需要針對不同的應用程式資源使用不同的 ConditionalHeaders 配置,這可能會很有用。
配置標頭
要配置 ConditionalHeaders,您需要在 install 區塊內部呼叫 version 函數。此函數提供了存取給定 ApplicationCall 和 OutgoingContent 的資源版本列表。您可以透過使用 EntityTagVersion 和 LastModifiedVersion 類別物件來指定所需的版本。
以下程式碼片段展示了如何為 CSS 添加 Etag 和 Last-Modified 標頭:
kotlin
install(ConditionalHeaders) {
val file = File("src/main/kotlin/com/example/Application.kt")
version { call, outgoingContent ->
when (outgoingContent.contentType?.withoutParameters()) {
ContentType.Text.CSS -> listOf(
EntityTagVersion(file.lastModified().hashCode().toString()),
LastModifiedVersion(Date(file.lastModified()))
)
else -> emptyList()
}
}
}您可以在這裡找到完整範例:conditional-headers。
