当浏览器访问一个页面时,浏览者的浏览器会向网页所在的服务器发送请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含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. 一个NULL引发的血案

    go sql.stmt query 发生了一个NULL值,所以发现了error, 发现服务不停的初始化sql stmt, 导致连接数过多,服务就变得很慢. 首先,我在初始化的之前,要判断这个是否是NU ...

  2. linux:网络yum源和制作本地光盘yum源

    linux:存放yum源的位置:/etc/yum.repos.d/,该目录下全是一些yum源 一.网络yum源: 如图:下面全部都是yum源,后缀是".repo"都是合法的yum源 ...

  3. 学习jsp(1)

    我的开发环境是:jdk1.7;netbean ;tomcat7. 尝试着写了第一个程序: ublic class myServlet extends HttpServlet{    @Override ...

  4. Lintcode: Rotate String

    Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given &qu ...

  5. nyist 626 intersection set

    http://acm.nyist.net/JudgeOnline/problem.php?pid=626 intersection set 时间限制:1000 ms  |  内存限制:65535 KB ...

  6. several生命周期

    several生命周期 1. 实例化: 容器调用servlet创建servlet对象 2. 初始化: <init-param> <param-name> company < ...

  7. bzoj4152 [AMPPZ2014]The Captain

    最短路,先将x排序,然后把排序后权值相邻的点连边,再把y排序,也把权值相邻的点连边,求一遍1到n的最短路就好啦. 代码 #include<cstdio> #include<queue ...

  8. 解决Android抽屉被击穿问题

    1,创建一个抽屉DrawerLayout,在V4包下android.support.v4.widget.DrawerLayout,在要设置抽屉的布局中设置android:layout_gravity= ...

  9. Union与union all区别

    Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All  两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需要将两个 ...

  10. struts2拦截器の简单实现(日语系统,请忽略乱码,重在实现)

    1.创建类实现interceptor接口或者继承abstractinter~~~类 package com.mi.intercepter; import java.util.Date; import ...