昨天我问了这个问题,得到了一些非常好的反馈。总结一下我的情况,我正在尝试将禁止缓存的 HTTP 响应标头添加到我的 Spring MVC Web 应用程序(我意外继承的项目)。
因此,根据回答者(最终是@Bozho)的建议,我将其添加到我的 Spring 配置文件中:
<mvc:annotation-driven/>
<mvc:interceptors>
<bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="-1"/>
<property name="useExpiresHeader" value="true"/>
<property name="useCacheControlHeader" value="true"/>
<property name="useCacheControlNoStore" value="true"/>
</bean>
</mvc:interceptors>
我在本地重新构建了我的应用程序,并在 Firefox 中打开它,这样我就可以使用 Firebug 来测试 HTTP 响应返回的标头。
对我来说不幸的是,最初的开发人员的目标是使其成为一个“单页 Web 应用程序”,每个实际 JSP 页面大约有 40 多个 AJAX 调用。
在这 40 多个 AJAX 请求中的任何一个中,我不仅没有看到我正在寻找的标头Cache-Control
、Expires
等,而且我担心由于每个 JSP 页面有超过 1 个 AJAX 请求,因此 Spring 拦截器不知道AJAX 调用以将标头添加到其中。我没有看到任何错误消息或日志输出表明 Spring 不喜欢我的配置等。一切似乎都很好......它只是不工作!
- 我是否配置错误?如果没有,这不起作用的原因是什么(为什么拦截器没有启动)?
- 多个 AJAX 调用会导致 Spring MVC 请求拦截器行为异常吗?
在此先感谢您的帮助!