304 Not Modified状态码
来源:互联网 发布:php开发移动app接口 编辑:程序博客网 时间:2024/06/06 00:14
304 Not Modified状态码
在 Response-Header 中加上这几项:
Last-Modified: Wed, 18 Jun 2008 14:22:27 GMT
Cache-Control: max-age=600
Expires: Wed, 18 Jun 2008 14:48:39 GMT
Date: Wed, 18 Jun 2008 14:38:39 GMT
其中 Last-Modified 后面的日期是上次更新 config 的时间,Date 后面是当前时间,Expires 后面是当前时间 + 10分钟,10分钟就是 Cache-Control 后面的 max-age,单位是秒。因为看到 GAE 对 static 文件的 Cache 时间也是10分钟,所以我使用了这个数字。
Last-Modified
如果客户端收到的 Response 中包含 Last-Modified,那么下次 request 的时候就会在 Request Header 中包含 If-Modified-Since 字段,值就是上次服务器发送的 Last-Modified,服务器端会判断上次的 config 时间是否比 If-Modified-Since 晚。如果自上次 request 之后又更新了 config,那么服务器就会返回完整的内容;如果期间没有更新 config,那么服务器就没必要返回完整的内容,只需要向客户端发送一个 304 Not Modified 状态码就可以了。
Cache-Control、Date 和 Expires
这几个参数的组合,表示告诉浏览器:这个文件在多长时间之内不会更改,在这个时间内不需要再 request,保守起见,我设置了10分钟。
浏览器行为
如果只是在网站的链接之间 click click click,那么浏览器会完全遵守上述行为。这样可以尽可能地减少请求次数,以及 response 的数据量。
如果在某个页面点击了浏览器的刷新按钮或者按 F5,浏览器会忽略 Expires 时间,把该页面需要的所有的文件都重新请求一遍。
如果按住 Ctrl 再刷新或者 Ctrl-F5 (俗称强制刷新),浏览器将不会发送 Last-Modified Header,将所有需要的文件请求一遍,服务器会返回文件的完整内容,而不是仅仅一个 304 Not Modified 状态码。
后记
经初步观察,现在浏览器不会每次都彪呼呼地去请求一大堆 css、jpg、gif 文件了,浏览器也不会每次都脑残地返回完整内容了,看来是有效了。
- 304 Not Modified状态码
- 304 Not Modified 是什么意思?
- 304 Not Modified 是什么意思
- HTTP 304 Not Modified
- HTTP/1.1 304 Not Modified
- 图片缓存:浏览器刷新 和 304 Not Modified 与 If-Modified-Since 及 Cache-Control
- 图片缓存:浏览器刷新 和 304 Not Modified 与 If-Modified-Since 及 Cache-Control
- 浏览器刷新 和 304 Not Modified 与 If-Modified-Since 及 Cache-Control
- 200 OK (FROM CACHE) 与 304 NOT MODIFIED的区别
- asp.net页面的304 Not Modified代码与 原理
- Python urllib2.HTTPError: HTTP Error 304: Not Modified
- 有关Nginx 200 OK (FROM CACHE) 与 304 NOT MODIFIED
- 200 OK (from cache) 与 304 Not Modified
- ajax加载页面httpd报错304 not modified错误的解决方法
- HTTP缓存技术,304(Not Modified)和200(from cache)有何区别?
- HTTP缓存技术,304(Not Modified)和200(from cache)区别
- ajax请求,返回值为304 Not Modified 错误原因与解决办法
- 自测一个小技巧解决手机端304 not modified问题
- vc学习笔记之hook(消息钩子过程)
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream ...
- ssh 连接mySQL hibernate配置
- hadoop 异常记录 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
- 304 Not Modified状态码
- 策略模式解释
- 歌手大赛之任意几个评委算得分
- 用两个栈实现一个队列——我作为面试官的小结
- 复杂事件处理引擎—Esper入门
- IOS网络之同步与异步加载数据详解
- 如何关联一个扩展名到我的程序-通过修改注册表
- 第十三周 用递归方法求奇数连乘的积
- java 获取当前年份 月份 日期