在使用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(); }
相关推荐
ScalaCache的核心功能是为各种缓存后端(如Guava Cache、Memcached或Redis)提供统一的API,简化了在Scala项目中集成缓存的过程。"coresimple"可能指的是ScalaCache的简单核心实现,提供基础的缓存功能,不依赖于...
在`xwiki-commons-tool-verification-resources-5.3-milestone-2.zip`这个压缩包中,我们可以看到一个名为`jersey-cache-control.zip`的文件,它包含了`Jersey`的基于注释的缓存控制功能,这是一个非常实用的特性,...
一、背景 针对目前各项目代码结构混乱,导致维护难,他人拒绝接收的问题,本人制定出适合本公司现有的JavaWeb技术架构,整理出一个标准的架构。 二、目标 让开发人员只需关注业务逻辑的实现 ...Guava Cache使用教
同时,理解HTTP缓存头(如Cache-Control和ETag)的使用,可以有效减少不必要的网络请求。 通过阅读《Java RESTful Web Service实战》这本书,你可以获得更深入的理论知识和实践技巧,从而在实际项目中更好地运用...
response.setHeader("Cache-Control", "no-cache"); response.setHeader("Connection", "keep-alive"); response.setContentType("text/event-stream"); // 发送事件 response.getWriter().write("data: 欢迎...
RESTful设计原则还包括**统一接口**,即所有资源的访问方式一致,以及**缓存机制**,通过HTTP的Cache-Control和ETag头支持客户端缓存,提高性能。 总结来说,REST是一种设计Web服务的理念,它提倡使用HTTP协议的...
缓存控制则通过HTTP响应头中的`Cache-Control`字段来指定。 在`rest-services-tutorial-master`这个压缩包中,可能包含了完整的示例代码、教程文档和运行指南,可以帮助学习者深入了解如何在Java中构建REST服务。...
4. **缓存(Cache)**: REST允许使用HTTP缓存机制来提高性能,但并非所有响应都可缓存。 5. **层式系统(Layered System)**: REST允许中间层,如代理、网关和缓存,来增强系统的可伸缩性和安全性。 在Java中实现...
通过HTTP响应头中的Cache-Control字段控制。 5. **统一接口**:保持接口的一致性,便于理解和使用。通常包括资源的URI、HTTP方法、编码格式(如JSON或XML)等。 Java中实现RESTful API: 1. **JAX-RS**:Java API...
通过研究这个REST-demos项目,开发者可以深入理解RESTful服务的工作原理,掌握Java中使用JAX-RS和Jersey构建REST服务的方法,以及如何进行接口测试和部署。这是一个非常实用的学习资源,对于想要涉足或提升在Web服务...
它集成了Jersey(JAX-RS实现)、Jackson(JSON处理)、Jetty(HTTP服务器)和 Metrics(监控)等组件。创建Dropwizard应用时,你需要定义一个资源类,类似于JAX-RS: ```java @Path("/users") public class ...
- **缓存(Cache)**:允许客户端缓存响应,提高性能。 - **层式系统(Layered System)**:中间层可以增加透明性,比如负载均衡和安全过滤。 2. **HTTP方法** - **GET**:获取资源,安全、幂等。 - **POST**:...
7. **RESTful API设计**:使用Java的Jersey或Spring Boot可以构建RESTful服务,使客户端和服务器之间的交互更加标准化和高效。 8. **错误与异常处理**:通过try-catch-finally结构,Java提供了一套完整的错误和异常...
27.3. JAX-RS and Jersey 27.4. Embedded Servlet Container Support 27.4.1. Servlets, Filters, and listeners Registering Servlets, Filters, and Listeners as Spring Beans 27.4.2. Servlet Context ...