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字段 ...
随机推荐
- Can't add self as subview的困惑
2016-05-27 09:40:43.4043 UMLOG: event: session_id=B63F36D84AD478B9F95C7D0F05DD819B, event=user_choos ...
- 安装GRID时跑root.sh脚本报错(ORA-27091: unable to queue I/O)
在安装GRID过程中,运行root.sh脚本时报如下信息: Adding Clusterware entries to upstart CRS-2672: Attempting to start 'o ...
- PAT 解题报告 1007. Maximum Subsequence Sum (25)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...
- CRM 迁移服务器备忘
1. 安装IIS 2. 安装sqlexpress 2005, sql management studio express 3. 安装.net framework4.0 4. 安装filezilla S ...
- IntelliJ IDEA 显示行号方法
设置方法如下: File->Settings->Editor->General->Appearence->Show Line Number
- 转:python webdriver API 之控制浏览器滚动条
有时候 web 页面上的元素并非直接可见的,就算把浏览器最大化,我们依然需要拖动滚动条才能看到想要操作的元素, 这个时候就要控制页面滚动条的拖动, 但滚动条并非页面上的元素, 可以借助 JavaScr ...
- c++之路进阶——codevs4543(普通平衡树)
4543 普通平衡树 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 这是一道水题 顺便祝愿LEZ和ZQQ 省 ...
- paper 17 : 机器学习算法思想简单梳理
前言: 本文总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想. 朴素贝叶斯: 有以下几个地方需要注意: 1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分 ...
- MySQL增删改查
C/S:Client ServerB/S:Brower Server php主要实现B/S .net IIS java TomCat LAMP: Linux系统 A阿帕奇服务器 Mysql数据库 Ph ...
- jquery表单重置另一种方法
页面中按钮为<a>标签时,点击取消按钮,表单内容重置,需要给form表单id="form": <a class="demo_one1" onc ...