public class ShallowEtagHeaderFilter extends OncePerRequestFilter
ETag
値を生成する Filter
EE。この ETag は、リクエストの If-None-Match
ヘッダーと比較されます。これらのヘッダーが等しい場合、レスポンスコンテンツは送信されず、代わりに 304 "Not Modified"
ステータスが送信されます。ETag はレスポンスコンテンツに基づいているため、レスポンス(View
など)は引き続きレンダリングされます。そのため、このフィルターは帯域幅のみを節約し、サーバーのパフォーマンスは節約しません。
注意 : Spring Framework 5.0 の時点で、このフィルターは Servlet 3.1 API 上に構築されたリクエスト / レスポンスデコレーターを使用します。
ALREADY_FILTERED_SUFFIX
logger
コンストラクターと説明 |
---|
ShallowEtagHeaderFilter() |
修飾子と型 | メソッドと説明 |
---|---|
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 | isWriteWeakETag() RFC 7232 に従って、レスポンスに書き込まれた ETag 値を脆弱にする必要があるかどうかを返します。 |
void | setWriteWeakETag(boolean writeWeakETag) RFC 7232 に従って、レスポンスに書き込まれる ETag 値を脆弱にするかどうかを設定します。 |
protected boolean | shouldNotFilterAsyncDispatch() デフォルト値は false であるため、フィルターは、最後に非同期にディスパッチされたスレッドまで ETag の生成を遅らせることができます。 |
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterErrorDispatch
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setWriteWeakETag(boolean writeWeakETag)
web.xml
のフィルター定義のパラメーター名 "writeWeakETag" に <init-param>
を使用して構成する必要があります。
public boolean isWriteWeakETag()
protected boolean shouldNotFilterAsyncDispatch()
false
であるため、フィルターは、最後に非同期にディスパッチされたスレッドまで ETag の生成を遅らせることができます。OncePerRequestFilter
の shouldNotFilterAsyncDispatch
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
protected boolean isEligibleForEtag(HttpServletRequestEE request, HttpServletResponseEE response, int responseStatusCode, InputStreamSE inputStream)
すべての条件が一致する場合、デフォルトの実装は true
を返します。
2xx
シリーズのレスポンスステータスコード request
- HTTP リクエスト response
- HTTP レスポンス responseStatusCode
- HTTP レスポンスステータスコード inputStream
- レスポンス本文 true
、それ以外の場合は false
protected StringSE generateETagHeaderValue(InputStreamSE inputStream, boolean isWeak) throws IOExceptionSE
デフォルトの実装では、MD5 ハッシュが生成されます。
inputStream
- InputStream としてのレスポンス本文 isWeak
- 生成された ETag が弱いかどうか IOExceptionSE
DigestUtils
public static void disableContentCaching(ServletRequestEE request)