【发布时间】:2014-09-30 20:27:02
【问题描述】:
我有一个球衣客户端返回 json 响应。我在所有球衣响应中都非常粗略地设置了一个无缓存标头。但是,当我进行更改时,当我看到数据库中的更改时……当我测试原始的 rest url 时,除非我重新启动应用程序服务器(Tomcat),否则我保留的数据不会返回。
我使用 ContainerResponseFilter 设置了无缓存。
public class HeaderResponseFilter implements ContainerResponseFilter {
public void filter(ContainerRequestContext request, ContainerResponseContext response) {
MediaType type = response.getMediaType();
if (type != null) {
String contentType = type.toString();
if (!contentType.contains("charset")) {
contentType = contentType + ";charset=utf-8";
response.getHeaders().putSingle("Content-Type", contentType);
response.getHeaders().putSingle("Cache-Control", "no-cache");
}
}
}
}
我在 chrome 中看到 no-cache 设置为标题:
Cache-Control:no-cache
Content-Length:1986
Content-Type:application/json;charset=utf-8
Date:Tue, 30 Sep 2014 20:22:02 GMT
Server:Apache-Coyote/1.1
重新启动应用服务器..瞧,根据持久化的数据库记录,它就在那里。
我正在使用带有 Restangular 的 angularjs,并没有明确地通过 Angular/Restangular 在客户端上设置任何缓存策略......目前不知道如何。
它与 angular/restangular 无关,因为绕过它并直接进入其余端点,我看不到 Oracle 中保留了什么。它与浏览器中的本地缓存无关,因为当我在 IE 和 Chrome 中尝试原始 URL 时,我也看不到它。
---更新--- 已经创建了一个 @NoCache 注释来尝试这种方法,并且在我正在设置的客户端中:
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache">
但是我不能禁用缓存!!帮助....
任何帮助表示赞赏。
问候
我
【问题讨论】:
标签: angularjs caching jersey restangular