Jetty有一个CacheControl参数(可以指定webdefault.xml),用于确定客户端的缓存行为(通过影响发送给客户端的标头).
Tomcat有类似的选择吗?简而言之,我想关闭tomcat服务器和/或特定webapp提供的所有页面的缓存?
更新
请注意,我不是指服务器端缓存.我希望服务器告诉所有客户端(浏览器)不要使用自己的缓存并始终从服务器获取内容.我想一次为所有资源,包括静态资源(.css,.js等).
我希望为一些静态资源启用HTTP缓存,例如图像,其访问受到Spring Security的限制.(这些资源不是安全关键,但也不应公开访问).如何避免让Spring Security添加禁用缓存的HTTP响应头?
如果我添加setCachePeriod()到我的资源处理程序注册WebMvcConfigurerAdapter.addResourceHandlers()如下:
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/").setCachePeriod(3600);
Run Code Online (Sandbox Code Playgroud)
仍然返回资源以及禁用缓存的以下标头:
Cache-Control: max-age=3600, must-revalidate
Expires: Mon, 04 Aug 2014 07:45:36 GMT
Pragma: no-cache
Run Code Online (Sandbox Code Playgroud)
我想避免在项目中引入任何XML配置,该项目目前仅使用Java注释配置.
有没有比扩展Spring资源处理程序更好的解决方案?
我有一个应用程序,并使用spring的控制器映射将图像加载到我的用户.(InputStream,响应等).
在我的控制器中,我将标头设置为缓存控制,基于文件等等.但是总是存在pragma:no-cache和Cache-Control:所有请求中的"max-age = 0",这取代了我的响应设置.
我正在努力解决这个问题,但没有任何作用.
我已经阅读了所有页面并尝试了我发现的所有内容:http: //docs.spring.io/autorepo/docs/spring-security/3.2.0.CI-SNAPSHOT/reference/html/headers.html
我的spring security.xml有:
<security:headers disabled="true"/>
Run Code Online (Sandbox Code Playgroud)
任何人都有一个好主意来解决这个问题?
请记住,要加载我需要通过控制器加载的图像,我从不直接调用静态.