簡単な'304 Not Modified'レスポンス

Estimated reading time: 1 minute

ConditionalHeaders Featureを使うことで、クライアントが同じコンテンツをすでに持っている場合にコンテンツの送信をしないようにすることができます。 ResourceまたはFinalContentが持つ、ETagLastModifiedプロパティをチェックすることによって実現されます。 条件で許可されている場合、コンテンツ全体は送信されず”304 Not Modified”レスポンスが代わりに送信されます。

This feature is defined in the class io.ktor.features.ConditionalHeaders and no additional artifacts are required.

設定

ConditionalHeadersをインストールすると追加の設定無しにと利用ができます:

install(ConditionalHeaders)

パラメータとして渡される生成されたOutgoingContentからバージョンの一覧を取得するようなlambdaを設定することができます:

install(ConditionalHeaders) {
    version { content -> listOf(EntityTagVersion("tag1")) }
}

拡張性

Versionインターフェースの実装はResourceインスタンスに紐付き、独自ロジックでのカスタム実装を返すことができます。 FinalContentETagLastModifiedヘッダーに対してのみチェックされることに注意してください。