HTTP 304错误的详细讲解


Posted in Javascript onNovember 13, 2013

Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

如果客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,就是动态产生的页面,往往没有包含 Last Modified 信息,这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。

因此,对于动态页面做缓存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回 304 的时候已经做了一次数据库查询,但是可以避免接下来更多的数据库查询,并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗,对于用户的感觉也是提高。

当这些缓存有效的时候,通过 HttpWatch 查看一个请求会得到这样的结果:

第一次访问 200

鼠标点击二次访问 (Cache)

按F5刷新 304

按Ctrl+F5强制刷新 200

如果是这样的就说明缓存真正有效了。以上就是我对 HTTP 304 的一个理解。

Javascript 相关文章推荐
在视频前插入广告
Nov 20 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
js textarea自动增高并隐藏滚动条
Dec 16 Javascript
20个非常棒的Jquery实用工具 国外文章
Jan 01 Javascript
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
jQuery实现链接的title快速出现的方法
Feb 20 Javascript
Javascript调试之console对象——你不知道的一些小技巧
Jul 10 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 #Javascript
js字母大小写转换实现方法总结
Nov 13 #Javascript
jQuery替换字符串(实例代码)
Nov 13 #Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 #Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
Nov 13 #Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 #Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 #Javascript
You might like
第八节 访问方式 [8]
2006/10/09 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
大学生村官考核材料
2014/05/23 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
试用期辞职信范文
2015/03/02 职场文书
优秀志愿者感言
2015/08/01 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫