如何在jetty服务器中为CSS,Javascript,图像等静态资源设置expires头
我看到有类似的问题,但找不到合适的答案..
任何新的答案将不胜感激。
尝试这个:
- 定义添加响应标头的filter:
/** * A filter that modifies a response. * * Init-parameters: *
* - headers: A comma-separated list of init-parameter names. Each init-parameter represents a * response header to set. Each header value may contain multiple comma-separated values.
*
* * @author Gili Tzabari */ public class ResponseFilter implements Filter { private final MultivaluedMap headers = new MultivaluedHashMap<>(); @Override public void init(FilterConfig filterConfig) throws ServletException { String headerNames = filterConfig.getInitParameter("headers"); if (headerNames == null) return; Splitter splitter = Splitter.on(','); for (String name: splitter.split(headerNames)) { String values = filterConfig.getInitParameter(name); if (values == null) continue; for (String value: splitter.split(values)) headers.add(name, value); } } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (response instanceof HttpServletResponse) { HttpServletResponse httpResponse = (HttpServletResponse) response; for (String key: headers.keySet()) for (String value: headers.get(key)) httpResponse.addHeader(key, value); } chain.doFilter(request, response); } @Override public void destroy() { } }
2.配置Jetty以将缓存标头注入特定的URL模式:
FilterHolder responseFilter = dynamicResources.addFilter(ResponseFilter.class, "*.js", EnumSet.allOf(DispatcherType.class)); responseFilter.setInitParameter("headers", "Cache-Control"); responseFilter.setInitParameter("Cache-Control", "max-age=60");