Jersey使用HTTP CACHE

38 篇文章 0 订阅
17 篇文章 0 订阅

在使用Jersey的restful的过程中,对于Http Cache有一定的基础了解,

Cache-Control

  • -private/public : private是并不能呗CDN或者代理接受,但是public可以
  • -no-cache,no-store,max-age 属性值用来给Cache的特性设置

 

	@GET
	@Path("/map")
	public Response queryMCSViewFields() {
		CacheControl cc = new CacheControl();
		cc.setMaxAge(300);
		cc.setNoStore(true);
		cc.setPrivate(true);
		cc.setNoCache(false);
		List<MCSAdaptiveModel> list = getCustomizeViewFieldService()
				.queryMCSFields("MCS_ORDER_SCHEDULE");
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success", true);
		map.put("data", list);
		String jsonString = JSON.toJSONString(map);
		ResponseBuilder builder = Response.ok(jsonString,
				MediaType.APPLICATION_JSON);
		builder.cacheControl(cc);
		return builder.build();

	}

 

 



 

Etag

也可以通过etag来根据etag来判断是否需要Cache

 

@Path("{id}")
	@GET
	@Produces(MediaType.APPLICATION_XML)
	public Response getUserWithEtagSupport(@PathParam("id") Long id,
			@Context Request request){
		User user = userDB.get(id);
		//generating Etag out of hashCode of user
		EntityTag tag = new EntityTag(Integer.toString(user.hashCode()));
		CacheControl cc = new CacheControl();
		cc.setMaxAge(1000);

		ResponseBuilder builder = request.evaluatePreconditions(tag);
		if(builder!=null){
	
			builder.cacheControl(cc);
			return builder.build();
		}

		builder = Response.ok(user,MediaType.APPLICATION_XML);
		builder.cacheControl(cc);
		builder.tag(tag);
		return builder.build();

	}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值