html状态码与缓存学习

  当浏览器访问一个页面时,浏览者的浏览器会向网页所在的服务器发送请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

常见的HTTP状态码:(需记住)

200  请求成功

301/302  资源被永久转移到其他URL。response中应该包含一个LocationURL,说明资源现在所处的位置。

304  客户的缓存资源是最新的,要客户端使用缓存

404  请求的资源不存在

500  内部服务器错误

这些状态码被分为五大类:

100-199  用于指定客户端应响应的动作。

200-299  用于表示请求成功。

300-399  用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。

400-499  用于指出客户端的错误。

500-599  用于指出服务器的错误。

HttpServletResponse中的常量代表关联不同标准信息的状态码,比数字易于读懂。

其他的状态码信息可以通过查询列表在必要的时候进行查询。

  缓存基于一套规则来决定什么时候使用缓存中的副本提供服务(有副本可用的情况下)。这些规则在HTTP协议中有定义,有的是由缓存的管理员设置。对于浏览器来说,缓存的规则是在HTTP协议头和页面的Meta标签中定义的。分别从新鲜度和校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是从服务器获取更新的版本。

新鲜度即是过期机制,缓存副本的有效期。一个缓存副本需要满足以下任一条件才是有效的:

1.有完整的过期时间控制头信息(HTTP协议报头),并且仍在有效期内。

2.浏览器已经使用过这个缓存副本,并且在一个会话中已经检查过新鲜度。

校验值是验证机制,服务器返回资源的时候有时在控制头信息带上这个资源的实体标签Etag(Entity Tag),它可以用来作为浏览器再次请求过程的校验标识。如果发小校验标识不匹配,说明资源已经被修改或过期,浏览器需要重新获取资源内容。

使用HTMLMeta标签

web开发者在HTML页面的<head>中加入<meta>标签:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

上述代码是告诉浏览器当前页面不被缓存,每次都需要去服务器获取。只有部分浏览器支持,所有缓存代理服务器都不支持。

 <meta http-equiv="Cache-Control" content="max-age=7200"/>

<meta http-equiv="Expires" content="Mon,20 Jul 2016 23:00:00 GMT/">

以上两种方式都有效,使用其一即可。都使用的情况下Cache-Control会覆盖Expires的效果。max-age设置了客户机可以接收生存期不大于指定时间(秒为单位)的响应。expires表示存在时间,允许客户端在这个时间之前不去检查(发送请求),和max-age效果一样。

用户操作行为与缓存的影响

原文地址:https://www.cnblogs.com/lionisnotkitty/p/6001844.html