Java RESTful设置Pragma和Expires
如何使用RESTful服务设置Java RESTful设置Pragma和Expires,java,rest,caching,jersey,jax-rs,Java,Rest,Caching,Jersey,Jax Rs,如何使用RESTful服务设置“Pragma”=“无缓存”和“过期”=“0” 我补充了以下内容 CacheControl cc = new CacheControl(); cc.setNoCache(true); cc.setNoStore(true); cc.setMustRevalidate(true); cc.setMaxAge(0); 上面的函数返回以下标题 HTTP/1.1 200 OK Cache-Control: no-cache, no-store, no-trans
“Pragma”=“无缓存”
和“过期”=“0”
我补充了以下内容
CacheControl cc = new CacheControl();
cc.setNoCache(true);
cc.setNoStore(true);
cc.setMustRevalidate(true);
cc.setMaxAge(0);
上面的函数返回以下标题
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, no-transform, must-revalidate, max-age=0
Content-Type: application/json
Transfer-Encoding: chunked
不确定如何设置“Pragma”=“无缓存”
和“过期”=“0”
任何帮助都是非常值得欣赏的。您可以通过注入
HttpServletResponse
或返回response
对象,在Jersey中设置您喜欢的任意响应头
HttpServletResponse示例:
@Produces(MediaType.APPLICATION_JSON)
public MyObject getValues(@Context HttpServletResponse response) {
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
...
}
@Produces(MediaType.APPLICATION_JSON)
public Response getValues() {
return Response.status(200)
.entity(new MyObject())
.expires(new Date())
.header("Pragma", "no-cache")
.type(MediaType.APPLICATION_JSON);
}
响应示例:
@Produces(MediaType.APPLICATION_JSON)
public MyObject getValues(@Context HttpServletResponse response) {
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
...
}
@Produces(MediaType.APPLICATION_JSON)
public Response getValues() {
return Response.status(200)
.entity(new MyObject())
.expires(new Date())
.header("Pragma", "no-cache")
.type(MediaType.APPLICATION_JSON);
}
谢谢Greg,我已经使用了HttpServletResponse。我想知道这两种方法都设置了头,这对IE中的数据缓存有什么影响吗?设置标题的全部目的是防止在IE中缓存数据,然而,尽管添加了标题,数据仍在IE 8中缓存。根据您设置标题的方式,缓存不会有任何区别。我将转储原始响应,并确保缓存控制和Pragma头设置为您期望的值。