前端性能优化-状态码200和304
2016-02-14 17:26
573 查看
什么是200和304
状态码200:请求已成功,请求所希望的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过GZIP压缩的话,文件是多大,则要有多大传输量。状态码304:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。即客户端和服务器端只需要传输很少的数据量来做文件的校验,如果文件没有修改过,则不需要返回全量的数据。
200和304发生的条件
在客户端强制刷新,如ctrl+f5这种情况下,所有的缓存策略失效,服务器端都会返回200;在客户端非强制刷新,如点击刷新按钮或按f5的情况下,服务器端会根据request头中:If-Modified-Since字段的时间与文件的实际修改时间进行比较,
如果修改时间比If-Modified-Since时间要新,则服务器会认为文件已经修改过了,向客户端返回全量的数据,客户端本地的缓存失效,状态码为200。
如果修改时间比If-Modified-Since时间要旧,则服务器会认为文件并未修改过,并且只会向客户端写回头文件,不返回文件数据,客户端使用本地缓存,状态码为304。
根据上述以及图中所示,状态为304的请求要比状态为200的请求的数据量小很多,因为304只需要返回响应头,并不需要返回整个文件,所以只需要几字节就可以了,这样能够节省大量的网络带宽,并减少了页面的渲染时间。
相关文章推荐
- hadoop 源码中NameNode与DataNode主要的类目录
- css技巧--整理(1)
- css3实现两端对齐
- 简单了解Backbone.js的Model模型以及View视图的源码
- 【JS学习笔记】正则表达式
- CSS基础研究(五)-CSS颜色研究
- 【JS学习笔记】内置对象
- jquery ajax No 'Access-Control-Allow-Origin' header is present on the requested resource
- 【JS学习笔记】基本包装类型
- 【JS学习笔记】时间与日期
- CSS基础研究(四)-CSS高级样式研究
- 前端笔记十三,变形与动画相关属性
- nodepad++ 插件
- CSS选择器
- 【JS学习笔记】数组
- Dom7.js 源码阅读备份
- JS中判断相等的方法(underscore中eq方法源码分析)
- H5移动web页面触摸按钮效果实现-模拟按钮hover效果实现
- VS2013 JS 跟踪
- CSS基础研究(三)-CSS基本样式研究