【问题标题】:Setting Jersey to allow caching?将泽西岛设置为允许缓存?
【发布时间】:2010-02-16 01:55:31
【问题描述】:

我从 Jersey @GET 方法返回了以下内容。它可以正常工作,但始终包含 No-cache 标头。我想允许客户端缓存这些数据,因为它很少更改。

ResponseBuilder rb = Response.ok(c);
    CacheControl cc = new CacheControl();
    cc.setMaxAge(60);
    cc.setNoCache(false);
    return rb.cacheControl(cc).build();

响应总是:

 Server Apache-Coyote/1.1
 Pragma No-cache
 Cache-Control  no-cache, no-transform, max-age=60
 Expires    Wed, 31 Dec 1969 19:00:00 EST
 Content-Type   application/xml
 Content-Length 291
 Date   Tue, 16 Feb 2010 01:54:02 GMT

我在这里做错了吗?

【问题讨论】:

    标签: rest jersey resteasy


    【解决方案1】:

    这是由于开启了 BASIC 身份验证造成的。

    在上下文中指定此项将纠正问题:

    <Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
           disableProxyCaching="false" />
    

    希望这对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      您的代码看起来不错。

      您使用的是哪个容器?确保没有禁用缓存。还要验证下游响应处理程序或过滤器没有设置 no-cache 指令。

      【讨论】:

      • 使用Tomcat6。我去看看,谢谢!我要疯了!
      • 也在使用 Spring,不确定这是否重要。我在容器中看不到任何可以设置它的东西。不过还在寻找。
      • 缓存头也可以在 Spring 中设置。我认为默认情况下通常不会设置“无缓存”。尝试先打一个静态资源以排除 Tomcat。然后根据您的应用程序的复杂程度,一次剥离一层,例如1) 在 Spring 中连接一个普通的 servlet 或 jsp 并检查缓存控制标头; 2) 暂时禁用所有过滤器;等
      • 原来我认为它与 BasicAuth.. 我需要深入挖掘。
      猜你喜欢
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2011-08-02
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多