如何在jetty服务器中为CSS,Javascript,图像等静态资源设置expires头 [英] How to set expires headers in jetty server for static resources such as CSS, Javascript,images etc

查看:232
本文介绍了如何在jetty服务器中为CSS,Javascript,图像等静态资源设置expires头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I saw that there was a similar question but could not find proper answer ..

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

Any new answer would be greatly appreciated.

推荐答案

试试这个:


  1. 定义添加响应标头的过滤器:



/**
 * A filter that modifies a response.
 * <p>
 * Init-parameters:
 * <ul>
 * <li>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.</li>
 * </ul>
 * <p>
 * @author Gili Tzabari
 */
public class ResponseFilter implements Filter
{
    private final MultivaluedMap<String, String> 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模式:

2. Configure Jetty to inject caching headers into a specific URL pattern:

FilterHolder responseFilter = dynamicResources.addFilter(ResponseFilter.class, "*.js",
    EnumSet.allOf(DispatcherType.class));
responseFilter.setInitParameter("headers", "Cache-Control");
responseFilter.setInitParameter("Cache-Control", "max-age=60");

这篇关于如何在jetty服务器中为CSS,Javascript,图像等静态资源设置expires头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆