静态资源的缓存
1.tomcat上面的方式
- 在web.xml配置过滤器
springSecurityFilterChain
/*
CacheFilter
com.hand.hap.winShare.utils.EasyCacheFilter css 7 jpg 7 js 7 png 7 woff 7 woff2 7 ttf 7
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;
}