1

フィルターがサーバーの応答を遅くする理由はありますか?

次のフィルターを使用した Web アプリがあります。

package com.bingo.filters;

import java.io.IOException;
import java.util.Arrays;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class CacheFilter implements Filter {

    static class CacheControlHeaderResponse extends HttpServletResponseWrapper {

        public static final String[] CACHEABLE_CONTENT_TYPES = new String[] {
            "text/css", "text/javascript", "image/png", "image/jpeg",
            "image/gif", "image/jpg" };

        static {
            Arrays.sort(CACHEABLE_CONTENT_TYPES);
        }

        public CacheControlHeaderResponse(HttpServletResponse response) {
            super(response);
        }

        @Override
        public void setContentType(String contentType) {

                super.setHeader("Expires", "-1");
                super.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
                super.setHeader("Pragma", "no-cache");

            super.setContentType(contentType);
        }
    }

    public CacheFilter() {

    }

    public void destroy() {

    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        chain.doFilter(request, new CacheControlHeaderResponse(res));   
    }

    public void init(FilterConfig fConfig) throws ServletException {

    }
}

これは、web.xml に追加した構成です。

<filter>
    <filter-name>cFilter</filter-name>
    <filter-class>com.bingo.filters.CacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>cFilter</filter-name>
    <url-pattern>/bingo/*</url-pattern>
</filter-mapping>

この新しいコードで war を展開すると、アプリケーション サーバーの応答が非常に遅くなります。ページの取得には 6 ~ 7 秒かかります。

しかし、上記のコードを使用せずに古い war ファイルをデプロイすると、応答が非常に速くなります。

パフォーマンスの問題を説明できる上記のコードに何か問題がありますか?

4

0 に答える 0