【发布时间】:2015-03-24 10:30:28
【问题描述】:
我写了以下代码。
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
public class CacheFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("Cache-Control", "no-store, no-cache,must-revalidate,max-age=0");
resp.setHeader("Pragma", "no-cache");
chain.doFilter(request, response);
}
public void destroy() {
//delegate.destroy();
}
public void init(FilterConfig filterConfig) {
//delegate.destroy();
}
}
这是 web.xml 文件中的映射代码
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.util.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
这个东西有效,但是这个过滤器被应用于所有内容,从而降低了我网站的性能。我希望此过滤器仅适用于内容类型“text/html”。这可以通过像这样的ExpiresFilter轻松实现
<init-param>
<param-name>ExpiresByType text/html</param-name>
<param-value>access plus 0 seconds</param-value>
</init-param>
但是如何在这段代码中实现呢? 感谢您尽早提供帮助。
【问题讨论】:
标签: java filter content-type servlet-filters cache-control