Expires
Expires 表示Cache的有效时间,允许客户端在这个时间之前不去发请求,等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
格式:Expires = "Expires" ":" HTTP-date
示例:Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified
Last-Modified用GMT格式表明了文档的最后修改时间,客户端第二次请求此URL时,会在头部加入一个属性,询问该时间之后文件是否有被修改过。如果服务器端的文件没有被修改过,则返回状态是304,内容为空,这样就节省了传输数据量。
3. 我的问题
这几天在做Web前端的时候,发现客户端的每次Ajax都会从服务器端请求数据,而这些数据的即时性没有那么高,没必要每次都请求。
在显式的给Ajax加上cache为true后,发现问题依旧。于是怀疑是服务端的问题,服务端使用 jersey 搭建了基于Restful的服务,代码片段如下:
@GET
@Produces("application/xml")
public Response getProducts() {
Response.ResponseBuilder response = Response.ok(data);
return response.build();
}
添加Cache控制后,进行测试,一切OK。
最后的代码如下:
@GET
@Produces("application/xml")
public Response getProducts() {
Response.ResponseBuilder response = Response.ok(data);
// Expires 3 seconds from now..this would be ideally based
// of some pre-determined non-functional requirement.
Date expirationDate = new Date(System.currentTimeMillis() + 3000);
response.expires(expirationDate);
return response.build();
}
以上只是示例代码,还可以进行更精细的控制,例如使用CacheControl、Last-Modified等等。
以上这篇浅谈Ajax请求与浏览器缓存就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易采站长站。









