静态资源的缓存

静态资源的缓存

1.tomcat上面的方式

  1. 在web.xml配置过滤器

    springSecurityFilterChain
    /*


    CacheFilter
    com.hand.hap.winShare.utils.EasyCacheFilter css 7 jpg 7 js 7 png 7 woff 7 woff2 7 ttf 7
CacheFilter *.jpg CacheFilter *.css CacheFilter *.js CacheFilter *.png CacheFilter *.ttf CacheFilter *.woff CacheFilter *.woff2 在写一个过滤器缓存数据 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;
}

猜你喜欢

转载自blog.csdn.net/luzhuhong1/article/details/82770431