简体   繁体   English

如何为静态资源(例如CSS,Javascript,图像等)设置Jetty服务器中的到期标头

[英]How to set expires headers in jetty server for static resources such as CSS, Javascript,images etc

I saw that there was a similar question but could not find proper answer .. 我看到有类似的问题,但找不到正确的答案..

Any new answer would be greatly appreciated. 任何新的答案将不胜感激。

Try this: 尝试这个:

  1. Define a Filter that adds response headers: 定义一个添加响应头的过滤器:
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;

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.HttpServletResponse;
import java.io.IOException;

/**
 * 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>
 * Sample usage:
 * <pre>
 * {@code
 * FilterHolder responseFilter = dynamicResources.addFilter(ResponseFilter.class, "*.js",
 *   EnumSet.allOf(DispatcherType.class));
 * responseFilter.setInitParameter("headers", "Cache-Control");
 * responseFilter.setInitParameter("Cache-Control", "max-age=60");
 * }
 * </pre>
 *
 * @author Gili Tzabari
 */
public class ResponseFilter implements Filter
{
    private final Multimap<String, String> headers = HashMultimap.create();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException
    {
        String headerNames = filterConfig.getInitParameter("headers");
        if (headerNames == null)
            return;
        for (String name : headerNames.split(","))
        {
            String values = filterConfig.getInitParameter(name);
            if (values == null)
                continue;
            for (String value : values.split(","))
                headers.put(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()
    {
    }
}
  1. Configure Jetty to inject caching headers into a specific URL pattern: 配置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");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Struts 2提供静态资源(图像,CSS等)? - How to serve static resources (images, css, etc) using Struts 2? 如何使用嵌入式Jetty设置静态资源和自定义服务? - How do I set up static resources and custom services with embedded Jetty? 静态资源(图像)Tomcat或Nginx服务器 - Static resources (images) Tomcat or Nginx server 如何在Java Server Pages中使用Cache-Control和Expires标头 - How to use Cache-Control and Expires headers in Java Server Pages 在jetty项目中存储静态文件如html / css / javascript的位置? - Where to store static files like html/css/javascript in a jetty project? 客户端在典型的Java Web服务器上使用静态资源(css / javascript文件)可以获得哪些特权或权限? - What are the privileges or rights a client could get with the static resources (css/javascript files) on a typical java web server? 如何在JSP中引用静态资源(如CSS,图像,Java脚本)? - How to give reference to static resources like css,images,java script in JSP? 嵌入式Jetty服务器的REST资源 - REST resources with embedded Jetty server 如何在嵌入式Jetty服务器中设置默认页面 - How to set Default page in embedded jetty server Jetty 9-如何使用Jetty 9设置“请求内容”和“请求标头”? - Jetty 9 - How do I set “request content” and “request headers” using Jetty 9?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM