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效果一样。
用户操作行为与缓存的影响
html状态码与缓存学习的更多相关文章
- HTTP状态码面试必知
typora-root-url: ./HTTPCODE HTTP状态码必知必会 这里主要介绍运维过程中经常遇到的状态码.并通过业界流行的Nginx进行模拟实现,让大家能有一种所见即所得的感觉.希望大家 ...
- JavaWeb_Day10_学习笔记1_response(3、4、5、6、7、8、9)发送状态码、响应、重定向、定时刷新、禁用浏览器缓存、响应字节数据、快捷重定向方法、完成防盗链
今天学习重点: 1.response和request响应和应答分别学习: 请求响应流程图 response 1 response概述 response是Servlet.service方法 ...
- HTTP学习记录:三、状态码
学习资源主要为:@小坦克HTTP相关博客 常见的HTTP状态码: 200--请求成功: 302--重定向: 304--Not Modified:表示上次的文档已经被缓存了,还可以继续使用: 400-- ...
- 一篇学习HTTP状态码的神文:我与依依的橙色岁月
好的,事情是这样的,数年前,我曾有过一段美好的夏日恋情,在此与大家分享. 依依 这个女孩叫做依依 ,她是 80 后的,生日是 1989 年 3 月吧,忘了哪一天了,分手太久了,记不起来了. 转学生 我 ...
- http304状态码缓存设置问题
当浏览器第一次加载资源的时候,返回一般为200,意思是成功获取资源,并会在浏览器的缓存中记录下max-age,第二次访问的时候:如果只是用浏览器打开,那么浏览器会去判断这个资源在缓存里有没有,如果有的 ...
- Javaweb学习笔记——(十)——————response对象,response字符流缓冲器,响应头,状态码,重定向,requset对象,路径和乱码
请求响应对象: request和response *当服务器接收都请求后,服务器会创建request和response对象,把请求数据封装到request对象中: *然后调用Servlet的sevic ...
- Tornado学习笔记(三) 请求方式/状态码
本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...
- HTTP 返回的状态码 != 200 ,浏览器不会将返回的内容缓存到本地磁盘上
今天无意发现的,以前处理HTTP State = 404或403之类的,都是直接返回 HTTP 200 OK,然后加一个缓存设置,例如: Cache-Control: max-age=3600 最近修 ...
- http缓存机制之304状态码
在网上看到一篇关于解释浏览器缓存更新机制304状态码的文章,里面说如果请求头中的If-Modified-Since字段和If-None-Match字段的值分别和响应头中的Last-Modified字段 ...
随机推荐
- 查找g++文档的方法
http://www.gnu.org/ -> Software(http://www.gnu.org/software/software.html) ->搜索 "gcc" ...
- VisualStudio如何以源码文本方式打开rc文件
视图 >> 解决方案资源管理器 >> 右击XXX.rc >> 打开方式 >> 源代码(文本)编辑器
- ORA-15260: permission denied on ASM disk group
向ASM磁盘组添加新的磁盘的时候,报了以下错误: $ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.4.0 Production on Sat Dec 2 ...
- 客户端 ios与android 的判断
<script> if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //alert(navigator.userAgen ...
- G面经Prepare: Search word delete sequence in dictionary
给一个单词一个字典,每次删除单词里任一个字母直到剩下一个字母,形成一个序列,比如office->offce->ofce->ofc->oc->c.问是否字典里存在一个这种序 ...
- 设置 BitmapData 没填充部分为透明色
默认 BitmapData 是以白色填充的 在初始化时,设定上每3,4个参数即可透明: new BitmapData(w,h,true,0) 第4个参数要为0
- C++之路进阶——bzoj3262(陌上花开)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser gryz2016 Logout 捐赠本站 Notice:由于本OJ ...
- ./fedora_install_oracle.sh bad interpreter
错误原因之一很有可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC ...
- 夺命雷公狗---node.js---6net模块玩telnet通信(下)
我们来升级玩玩,废话不多说,代码如下所示: /** * Created by leigood on 2016/8/12. */ var net = require('net'); var ChatSr ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON AddNoiseWhite
zw版[转发·台湾nvp系列Delphi例程]HALCON AddNoiseWhite unit Unit1;interfaceuses Windows, Messages, SysUtils, Va ...