クラス ShallowEtagHeaderFilter
java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.springframework.web.filter.ShallowEtagHeaderFilter
- 実装済みのインターフェース一覧:
jakarta.servlet.Filter, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, EnvironmentCapable, ServletContextAware
Filter は、レスポンスの内容に基づいて ETag 値を生成します。この ETag はリクエストの If-None-Match ヘッダーと比較されます。これらのヘッダーが等しい場合、レスポンスの内容は送信されず、代わりに 304 "Not Modified" ステータスが送信されます。ETag はレスポンスコンテンツに基づいているため、レスポンス (たとえば、View ) は引き続きレンダリングされます。そのため、このフィルターは帯域幅のみを節約し、サーバーパフォーマンスは節約しません。
状態を変更する HTTP メソッドと、If-Match や If-Unmodified-Since などのその他の HTTP 条件付きリクエストヘッダーは、このフィルターの範囲外です。代わりに ServletWebRequest.checkNotModified(String, long) の使用を検討してください。
- 導入:
- 3.0
- 作成者:
- Arjen Poutsma, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
フィールド概要
クラス OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIXクラス GenericFilterBean から継承されたフィールド
loggerコンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明static voiddisableContentCaching(jakarta.servlet.ServletRequest request) このメソッドは、ShallowEtagHeaderFilter のコンテンツキャッシングレスポンスラッパーを抑制するために使用できます。protected voiddoFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) doFilterと同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。protected StringSEgenerateETagHeaderValue(InputStreamSE inputStream, boolean isWeak) 指定されたレスポンス本文のバイト配列から ETag ヘッダー値を生成します。protected booleanisEligibleForEtag(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, int responseStatusCode, InputStreamSE inputStream) 指定されたリクエストとレスポンスの交換について ETag を計算する必要があるかどうか。booleanRFC 7232 に従って、レスポンスに書き込まれた ETag 値を脆弱にする必要があるかどうかを返します。voidsetWriteWeakETag(boolean writeWeakETag) RFC 7232 に従って、レスポンスに書き込まれる ETag 値を脆弱にするかどうかを設定します。protected booleanデフォルト値はfalseであるため、フィルターは、最後に非同期にディスパッチされたスレッドまで ETag の生成を遅らせることができます。クラス OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterErrorDispatch
コンストラクターの詳細
ShallowEtagHeaderFilter
public ShallowEtagHeaderFilter()
メソッドの詳細
setWriteWeakETag
public void setWriteWeakETag(boolean writeWeakETag) RFC 7232 に従って、レスポンスに書き込まれる ETag 値を脆弱にするかどうかを設定します。web.xmlのフィルター定義のパラメーター名 "writeWeakETag" に<init-param>を使用して構成する必要があります。- 導入:
- 4.3
- 関連事項:
isWriteWeakETag
public boolean isWriteWeakETag()RFC 7232 に従って、レスポンスに書き込まれた ETag 値を脆弱にする必要があるかどうかを返します。- 導入:
- 4.3
shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()デフォルト値はfalseであるため、フィルターは、最後に非同期にディスパッチされたスレッドまで ETag の生成を遅らせることができます。- オーバーライド:
- クラス
OncePerRequestFilterのshouldNotFilterAsyncDispatch
doFilterInternal
protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilterdoFilterと同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。詳細については、OncePerRequestFilter.shouldNotFilterAsyncDispatch()を参照してください。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- 次で指定:
- クラス
OncePerRequestFilterのdoFilterInternal - 例外:
jakarta.servlet.ServletExceptionIOExceptionSE
isEligibleForEtag
protected boolean isEligibleForEtag(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, int responseStatusCode, InputStreamSE inputStream) 特定のリクエストとレスポンスの交換に対して ETag を計算する必要があるかどうか。次のすべてが一致する場合、デフォルトでは、これはtrueです。- レスポンスはコミットされていません。
- レスポンスステータスコードは
2xxシリーズです。 - リクエストメソッドは GET です。
- レスポンス Cache-Control ヘッダーに "no-store" が含まれていない(またはまったく存在しない)。
- パラメーター:
request- HTTP リクエストresponse- HTTP レスポンスresponseStatusCode- HTTP レスポンスステータスコードinputStream- レスポンス本文- 戻り値:
- ETag 生成に適格な場合は
true、それ以外の場合はfalse
generateETagHeaderValue
protected StringSE generateETagHeaderValue(InputStreamSE inputStream, boolean isWeak) throws IOExceptionSE 指定されたレスポンス本文のバイト配列から ETag ヘッダー値を生成します。デフォルトの実装では、MD5 ハッシュが生成されます。
- パラメーター:
inputStream- InputStream としてのレスポンス本文isWeak- 生成された ETag が弱いかどうか- 戻り値:
- ETag ヘッダー値
- 例外:
IOExceptionSE- 関連事項:
disableContentCaching
public static void disableContentCaching(jakarta.servlet.ServletRequest request) このメソッドは、ShallowEtagHeaderFilter のコンテンツキャッシュレスポンスラッパーを抑制するために使用できます。その主な理由は、キャッシュされず、eTag を必要としないストリーミングシナリオです。注意 : キャッシュなしでレスポンスコンテンツ全体を書き込むには、レスポンスが書き込まれる前にこのメソッドを呼び出す必要があります。
- 導入:
- 4.2