最近、Spring 3.2 でサーブレット 3.0 の非同期機能を使用していますが、ShallowEtagHeaderFilter がまったく効果的ではありませんでした。コンテンツが処理される前に、フレームワークが応答をフラッシュする必要があると思います...どうすれば解決できますか? 誰でも経験がありますか?
質問する
484 次
1 に答える
0
Spring 4.3.5 の ShallowEtagFilter のコード スニペットを参照すると、
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
HttpServletResponse responseToUse = response;
if (!isAsyncDispatch(request) && !(response instanceof ContentCachingResponseWrapper)) {
responseToUse = new HttpStreamingAwareContentCachingResponseWrapper(response, request);
}
filterChain.doFilter(request, responseToUse);
if (!isAsyncStarted(request) && !isContentCachingDisabled(request)) {
updateResponse(request, responseToUse);
}
}
/**
* Whether request processing is in asynchronous mode meaning that the
* response will not be committed after the current thread is exited.
* @param request the current request
* @since 3.2
* @see WebAsyncManager#isConcurrentHandlingStarted()
*/
protected boolean isAsyncStarted(HttpServletRequest request) {
return WebAsyncUtils.getAsyncManager(request).isConcurrentHandlingStarted();
}
非同期サーブレットを使用すると、条件が満たされないため、etag を生成するビジネス ロジックが呼び出されません。
于 2017-09-04T07:19:19.630 に答える