如何在web.xml中为Jetty配置静态资源缓存?

10

我在阅读这篇文章: http://docs.codehaus.org/display/JETTY/LastModifiedCacheControl

它说:

 

使用cacheControl初始化参数,Jetty默认servlet允许设置静态内容的缓存控制头部。

<init-param>
    <param-name>cacheControl</param-name>
    <param-value>max-age=3600,public</param-value>
</init-param>

然而,我不确定是否正在使用默认servlet。至少在web.xml中没有这样的配置:

<web-app>
    <display-name>Wicket QuickStart</display-name>
    <context-param>
        <param-name>configuration</param-name>
        <param-value>development</param-value>
    </context-param>
    <servlet>
        <servlet-name>quickstart</servlet-name>
        <servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>wicket.quickstart.WicketApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>quickstart</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

我想为静态资源配置缓存,例如:

/src/webapp/*,即:/src/webapp/images、/src/webapp/css、/src/webapp/js等。

我应该在web.xml中添加什么内容?

1个回答

9
需要在您的web.xml文件中添加以下内容。
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
        <param-name>cacheControl</param-name>
        <param-value>max-age=3600,public</param-value>
    </init-param>
</servlet>

1
使用Wicket,静态资源实际上是由WicketServlet提供的,所以这并没有帮助 :( - Martin
3
哦,我明白了。我想你需要在Application.init()方法中设置以下内容。getResourceSettings().setDefaultCacheDuration(3600); - user5084
2
如果你不像我一样使用Wicket,但是你正在使用Jetty 8或更高版本,请将org.mortbay.jetty.servlet.DefaultServlet更改为org.eclipse.jetty.servlet.DefaultServlet。 - Ryan Shillington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接