静态资源的缓存

静态资源的缓存

1.tomcat上面的方式

  1. 在web.xml配置过滤器
  2.    <filter-mapping>
         <filter-name>springSecurityFilterChain</filter-name>
         <url-pattern>/*</url-pattern>
         </filter-mapping>
         <filter>
         <filter-name>CacheFilter</filter-name>
         <filter-class>com.hand.hap.winShare.utils.EasyCacheFilter</filter-class>
         <!-- 配置要缓存的web资源以及缓存时间,以小时为单位 -->
           <init-param>
           <param-name>css</param-name>
           <param-value>7</param-value>
          </init-param>
         <init-param>
           <param-name>jpg</param-name>
           <param-value>7</param-value>
         </init-param>
         <init-param>
           <param-name>js</param-name>
           <param-value>7</param-value>
         </init-param>
         <init-param>
           <param-name>png</param-name>
           <param-value>7</param-value>
         </init-param>
          <init-param>
           <param-name>woff</param-name>
           <param-value>7</param-value>
         </init-param>
          <init-param>
           <param-name>woff2</param-name>
           <param-value>7</param-value>
         </init-param>
          <init-param>
           <param-name>ttf</param-name>
           <param-value>7</param-value>
         </init-param>
         </filter>
        <!-- 配置要缓存的web资源的后缀-->
         <filter-mapping>
         <filter-name>CacheFilter</filter-name>
         <url-pattern>*.jpg</url-pattern>
         </filter-mapping>
    
         <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.css</url-pattern>
         </filter-mapping>
    
       <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.js</url-pattern>
       </filter-mapping>
        <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.png</url-pattern>
       </filter-mapping>
         <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.ttf</url-pattern>
       </filter-mapping>
        <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.woff</url-pattern>
       </filter-mapping>
        <filter-mapping>
           <filter-name>CacheFilter</filter-name>
           <url-pattern>*.woff2</url-pattern>
       </filter-mapping>
    

在写一个过滤器缓存数据
package com.hand.hap.winShare.utils;

	import java.io.IOException;
	
	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;
	/**
	 * 一个简单的使用静态缓存的过滤器
	 * @author 鲁竹红
	 */
	public class EasyCacheFilter implements Filter{
	    private FilterConfig filterConfig;
	    @Override
	    public void init(FilterConfig filterConfig) throws ServletException {
	        System.out.println("----过滤器初始化----");
	        this.filterConfig = filterConfig;
	    }
	
	    //过滤器功能在这里实现
	    @Override
	    public void doFilter(ServletRequest req, ServletResponse resp,
	            FilterChain chain) throws IOException, ServletException {
	        HttpServletRequest request = (HttpServletRequest) req;
	        HttpServletResponse response = (HttpServletResponse) resp;

    //1.获取用户想访问的资源
    String uri = request.getRequestURI(); 
    //2.得到用户想访问的资源的后缀名
    String ext = uri.substring(uri.lastIndexOf(".")+1); 
    //得到资源需要缓存的时间
    String time = filterConfig.getInitParameter(ext);
    if(time!=null){
        long t = Long.parseLong(time)*3600*1000*24;
        //设置浏览器缓存
        response.setDateHeader("expires", System.currentTimeMillis() + t);
        response.setHeader("Pragma","public");
        response.setHeader("Cache-Control","public");
    } 
    chain.doFilter(request, response);
}

@Override
public void destroy() {
    System.out.println("----过滤器销毁----");
}

}

2. Nginx上面的方式

详情看http://blog.csdn.net/xyr05288/article/details/68928403
location ~ .(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
proxy_pass http://cluster; #如果没有缓存则通过proxy_pass转向请求
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h; #对不同的HTTP状态码设置不同的缓存时间,h小时,d天数
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
expires 30d;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值