No-Cache设置为泽西头响应,但未返回持久数据

时间:2014-09-30 20:27:02

标签: angularjs caching jersey restangular

我有一个返回json响应的泽西客户端。我在所有的球衣反应中都粗略地设置了无缓存标题。但是,当我进行更改时,我看到数据库中的更改...当我测试原始的rest url时,除非我重新启动应用服务器(Tomcat),否则我保留的数据不会被返回。

我使用ContainerResponseFilter设置了no-cache。

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");
                }
            }
        }
}

我看到no-cache设置为chrome中的标题:

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">

但我无法禁用缓存!帮助....

任何帮助表示感谢。

此致

1 个答案:

答案 0 :(得分:0)

似乎它是在我的JPA层中缓存....

只有一个小应用程序,因此禁用EclipseLink共享缓存......现在它正在运行。

<persistence-unit name="xp-jpa" transaction-type="RESOURCE_LOCAL">        
        <shared-cache-mode>NONE</shared-cache-mode>