tomcat中Cache-Control 的配置

本文介绍如何在Tomcat中通过配置实现js和css的Cache-Control缓存控制,以提升网页加载速度。同时也提及了可以自行添加图片缓存的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写过滤器

这里主要提供了js,css缓存

如果想要的话,自己可以直接添加图片的映射




package com.foo.filter;

 
import org.apache.log4j.Logger;
 
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.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
public class ReplyHeaderFilter implements Filter
{
   static Logger log = Logger.getLogger(ReplyHeaderFilter.class);
   private String[][] replyHeaders = {{}};
 
   public void init(FilterConfig config)
   {
      Enumeration names = config.getInitParameterNames();
      ArrayList tmp = new ArrayList();
      while (names.hasMoreElements())
      {
         String name = (String)names.nextElement();
         String value = config.getInitParameter(name);
         log.debug("Adding header name: " + name + "='" + value + "'");
         String[] pair = {name, value};
         tmp.add(pair);
      }
      replyHeaders = new String[tmp.size()][2];
      tmp.toArray(replyHeaders);
   }
 
   public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain chain)
      throws IOException, ServletException
   {
      // Apply the headers
      HttpServletResponse httpResponse = (HttpServletResponse)response;
      for (int n = 0; n < replyHeaders.length; n++)
      {
         String name = replyHeaders[n][0];
         String value = replyHeaders[n][1];
         httpResponse.setHeader(name, value);
      }
 
      long relExpiresInMillis = System.currentTimeMillis() + (1000 * 259200);
      httpResponse.setHeader("Expires", getGMTTimeString(relExpiresInMillis));
      chain.doFilter(request, response);
   }
 
   public static String getGMTTimeString(long milliSeconds)
   {
      SimpleDateFormat sdf = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'");
      return sdf.format(new Date(milliSeconds));
   }
 
   public void destroy()
   {
   }
}

 <filter>
        <description>Adds cacheing to content output files.</description>
        <filter-name>CacheControlFilter</filter-name>
        <filter-class>com.foo.filter.ReplyHeaderFilter</filter-class>
        <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>public,max-age=86400</param-value>
        </init-param>
        <init-param>
            <param-name>Pragma</param-name>
            <param-value>public</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CacheControlFilter</filter-name>
        <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>CacheControlFilter</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值