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 相关文章推荐
保证JavaScript和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
基于jquery & json的省市区联动代码
Jun 26 Javascript
JS实现的仿QQ空间图片弹出效果代码
Feb 23 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
vue-router项目实战总结篇
Feb 11 Javascript
实例详解Node.js 函数
Jun 10 Javascript
用vue快速开发app的脚手架工具
Jun 11 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
详解js中的原型,原型对象,原型链
Jul 16 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
Javascript实现单例模式
2016/01/24 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
使用Python从零开始撸一个区块链
2018/03/14 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Python字符串的修改方法实例
2019/12/19 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python3将变量输入的简单实例
2020/08/19 Python
经济学人订阅:The Economist
2018/07/19 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
社区安全检查制度
2014/02/03 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
委托书如何写
2014/08/30 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers