我正在尝试在spring mvc中添加配置,以便我的静态内容如js,图像将被浏览器缓存。我在dispatcher-servlet.xml中添加了以下内容
<beans>
.............
<mvc:interceptors>
<bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="31556926"/>
<property name="useExpiresHeader" value="true"/>
<property name="useCacheControlHeader" value="true"/>
<property name="useCacheControlNoStore" value="true"/>
</bean>
</mvc:interceptors>
</beans>
但我仍然没有看到缓存已启用。我在浏览器调试器中看到以下内容,其中显示了Cache-Control:&#34; no-cache&#34;。
请帮助!!!
答案 0 :(得分:1)
您可以使用mvc:resources来缓存静态文件。
<mvc:resources mapping="/static/**" location="/public-resources/"
cache-period="31556926"/>
<mvc:annotation-driven/>
答案 1 :(得分:0)
您错过了cacheMappings
property来配置路径模式/缓存指令。
<bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="31556926"/>
<property name="useExpiresHeader" value="true"/>
<property name="useCacheControlHeader" value="true"/>
<property name="useCacheControlNoStore" value="true"/>
<property name="cacheMappings">
<props>
<prop key="/static/**">2592000</prop>
</props>
</property>
</bean>
但事实上,Burak Keceli的答案确实存在;您最好使用WebMvcConfigurerAdapter.addResourceHandlers
或XML配置版本<mvc:resources/>
。
答案 2 :(得分:0)
我遇到了同样的问题。我添加了拦截器,但注意到在HTTP响应中发生了变化。
在我的案例中,我的项目中还有另一个Spring上下文XML,其中注册了另一个<mvc:interceptors>
。它有效地取代了我的WebContentInterceptor配置。结合它们解决了它。
您的配置Abdus Samad可能会发生类似的事情......