クラス ShallowEtagHeaderFilter
java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.springframework.web.filter.ShallowEtagHeaderFilter
- 実装されたすべてのインターフェース:
FilterEE
、Aware
、BeanNameAware
、DisposableBean
、InitializingBean
、EnvironmentAware
、EnvironmentCapable
、ServletContextAware
レスポンスの内容に基づいて
ETag
値を生成する Filter
EE。この 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
フィールドサマリー
クラス org.springframework.web.filter.OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIX
クラス org.springframework.web.filter.GenericFilterBean から継承されたフィールド
logger
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明static void
disableContentCaching
(ServletRequestEE request) このメソッドは、ShallowEtagHeaderFilter のコンテンツキャッシングレスポンスラッパーを抑制するために使用できます。protected void
doFilterInternal
(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。protected StringSE
generateETagHeaderValue
(InputStreamSE inputStream, boolean isWeak) 指定されたレスポンス本文のバイト配列から ETag ヘッダー値を生成します。protected boolean
isEligibleForEtag
(HttpServletRequestEE request, HttpServletResponseEE response, int responseStatusCode, InputStreamSE inputStream) 指定されたリクエストとレスポンスの交換について ETag を計算する必要があるかどうか。boolean
RFC 7232 に従って、レスポンスに書き込まれた ETag 値を脆弱にする必要があるかどうかを返します。void
setWriteWeakETag
(boolean writeWeakETag) RFC 7232 に従って、レスポンスに書き込まれる ETag 値を脆弱にするかどうかを設定します。protected boolean
デフォルト値はfalse
であるため、フィルターは、最後に非同期にディスパッチされたスレッドまで ETag の生成を遅らせることができます。クラス org.springframework.web.filter.OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterErrorDispatch
クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
コンストラクターの詳細
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(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE クラスからコピーされた説明:OncePerRequestFilter
doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。詳細については、OncePerRequestFilter.shouldNotFilterAsyncDispatch()
を参照してください。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- 次で指定:
- クラス
OncePerRequestFilter
のdoFilterInternal
- 例外:
ServletExceptionEE
IOExceptionSE
isEligibleForEtag
protected boolean isEligibleForEtag(HttpServletRequestEE request, HttpServletResponseEE 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
このメソッドは、ShallowEtagHeaderFilter のコンテンツキャッシュレスポンスラッパーを抑制するために使用できます。その主な理由は、キャッシュされず、eTag を必要としないストリーミングシナリオです。注意 : キャッシュなしでレスポンスコンテンツ全体を書き込むには、レスポンスが書き込まれる前にこのメソッドを呼び出す必要があります。
- 導入:
- 4.2