【发布时间】:2017-06-15 08:24:28
【问题描述】:
我正在尝试为我网站中的任何静态资源(图像、js、css)设置缓存控制。我正在使用 Spring 4(带有 Spring Security)和 Tomcat 8 服务器。
我已经尝试在我的 web.xml 中设置 ExpiryFilter
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/javascript</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/resources/*</url-pattern>
</filter-mapping>
但由于 ExpiresFilter 不起作用,我尝试使用缓存周期设置 MVC 资源:
<mvc:resources mapping="/resources/**" location="/resources/,classpath:/resources/" cache-period="2592000" />
<mvc:annotation-driven />
但它也不起作用。
我还尝试检查我的 web.xml 中的过滤器映射是否正常工作,但事实证明它没有过滤任何图像/js/css 类型,而是过滤了我的 html 文件。我的静态文件保存在 webapp/resources 文件夹中,无论我的 html 文件是否在 webapp/WEB-INF/jsp 文件中。
我还在我的 spring 安全配置中添加了这个:
<http pattern="/resources/**" security="none"></http>
有什么我想念的吗?
谢谢。
【问题讨论】:
-
这是如何解决的。我也有同样的问题
标签: java spring tomcat caching