当浏览器访问一个页面时,浏览者的浏览器会向网页所在的服务器发送请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含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状态码与缓存学习的更多相关文章

  1. HTTP状态码面试必知

    typora-root-url: ./HTTPCODE HTTP状态码必知必会 这里主要介绍运维过程中经常遇到的状态码.并通过业界流行的Nginx进行模拟实现,让大家能有一种所见即所得的感觉.希望大家 ...

  2. JavaWeb_Day10_学习笔记1_response(3、4、5、6、7、8、9)发送状态码、响应、重定向、定时刷新、禁用浏览器缓存、响应字节数据、快捷重定向方法、完成防盗链

    今天学习重点: 1.response和request响应和应答分别学习: 请求响应流程图 response 1        response概述 response是Servlet.service方法 ...

  3. HTTP学习记录:三、状态码

    学习资源主要为:@小坦克HTTP相关博客 常见的HTTP状态码: 200--请求成功: 302--重定向: 304--Not Modified:表示上次的文档已经被缓存了,还可以继续使用: 400-- ...

  4. 一篇学习HTTP状态码的神文:我与依依的橙色岁月

    好的,事情是这样的,数年前,我曾有过一段美好的夏日恋情,在此与大家分享. 依依 这个女孩叫做依依 ,她是 80 后的,生日是 1989 年 3 月吧,忘了哪一天了,分手太久了,记不起来了. 转学生 我 ...

  5. http304状态码缓存设置问题

    当浏览器第一次加载资源的时候,返回一般为200,意思是成功获取资源,并会在浏览器的缓存中记录下max-age,第二次访问的时候:如果只是用浏览器打开,那么浏览器会去判断这个资源在缓存里有没有,如果有的 ...

  6. Javaweb学习笔记——(十)——————response对象,response字符流缓冲器,响应头,状态码,重定向,requset对象,路径和乱码

    请求响应对象: request和response *当服务器接收都请求后,服务器会创建request和response对象,把请求数据封装到request对象中: *然后调用Servlet的sevic ...

  7. Tornado学习笔记(三) 请求方式/状态码

    本章我们来学习 Tornado 支持的请求方式 请求方式 Tornado支持任何合法的HTTP请求(GET.POST.PUT.DELETE.HEAD.OPTIONS).你可以非常容易地定义上述任一种方 ...

  8. HTTP 返回的状态码 != 200 ,浏览器不会将返回的内容缓存到本地磁盘上

    今天无意发现的,以前处理HTTP State = 404或403之类的,都是直接返回 HTTP 200 OK,然后加一个缓存设置,例如: Cache-Control: max-age=3600 最近修 ...

  9. http缓存机制之304状态码

    在网上看到一篇关于解释浏览器缓存更新机制304状态码的文章,里面说如果请求头中的If-Modified-Since字段和If-None-Match字段的值分别和响应头中的Last-Modified字段 ...

随机推荐

  1. ASP.NET页面传值之Server.Transfer 和Response.Direct

    先看实例: B.apsx:         public string TextBox1Text         {             get             {             ...

  2. System.Threading.Timer使用心得

    System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...

  3. HTML语言的一些元素(二)

    3)表示元素:<b>,<i>,<u>,<s>,<tt>,<sup>,<sub>,<strike>,< ...

  4. NSDateFormatter

    NSDate *now = [NSDate date]; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = ...

  5. Swift实战-豆瓣电台(三)获取网络数据

    观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...

  6. eclipse jsp 加载服务器tomcat

    1.window->Preferences

  7. [转]-Dmaven.multiModuleProjectDirectory system propery is not set. 解决方案 适用于myeclipes 和 eclipes

    eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...

  8. C++之路进阶——bzoj3524(Couriers)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  gryz2016 Logout 捐赠本站 Notice:由于本OJ ...

  9. js 默认选中select 选项

    <select id="HDname" style="width: 150px;"><option value="0"&g ...

  10. 夺命雷公狗---DEDECMS----19dedecms栏目列表页的完成

    我们的栏目页表页的模版如果不清楚叫什么名,可以通过: 这里很清楚的记录着,我们来看下他: 他长得和我们以前做首页时候是不是很像呢?其实就是一样的,我们改下即可,如下所示: {dede:channel ...