如何在jetty服务器中为CSS,Javascript,图像等静态资源设置expires头

我看到有类似的问题,但找不到合适的答案..

任何新的答案将不胜感激。

尝试这个:

  1. 定义添加响应标头的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");