查看: 21605|回复: 2

HTTP/1.1 304 Not Modified 简单分析分析

[复制链接]
发表于 2013-3-12 10:59:39 | 显示全部楼层 |阅读模式
本帖最后由 xxx314 于 2013-3-12 11:30 编辑

以前在看到http请求的时候,经常看到HTTP/1.1 304 Not Modified这种返回响应,今天在分析的时候又遇到这个情况,所以就这个304给大家saysay。。。。

304的标准解释: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,从而大大的降低带宽的消耗,对于用户的感觉也是提高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

 楼主| 发表于 2013-3-12 11:15:50 | 显示全部楼层
当这些缓存有效的时候,通过查看一个请求会得到这样的结果:
第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200
如果是这样的就说明缓存真正有效了。
回复

使用道具 举报

 楼主| 发表于 2013-3-12 17:28:20 | 显示全部楼层
304可能原因:
1、服务器缓存(IIS缓存)缘故 当我们打开一个网站或者和一些较大的网站换友情链接,常常发现ctrl+F5 重新加载后才会显示新的页面, 这其实就是缓存的缘故。 而设置缓存的作用一般 都是为了加速网站的提前加载。 措施:对主机端的缓存做设置,让网页型文件每过三小时就过期一次。可以 使用这段代码ExpiresByType text/html “access plus 3 hours”,但是要注 意一点就是,不要对所有文件做短期缓存过期处理,比如图片,Flash等,那样 你的用户访问速度会非常的慢因为每次都有相应加载。 遗留问题:很多网站因为图片缓存大量返回304。 

2、网站结构问题 如果网站结构不能有效的让蜘蛛顺利爬行,也就是说虽然蜘蛛有抓取, 但由 于网站结构问题导致蜘蛛前后两次抓取内容相同, 或者说蜘蛛每次抓取首页都只 抓了那块固定的内容,那么就势必导致蜘蛛对首页的抓取返回304状态码。 措施:制作网站地图,放在网站首页前面的位置,给蜘蛛引路。

 3、网站速度问题 有的时候由于速度因素导致网站只加载了头部, 后面部分而没有及时显示出 来, 也可能导致蜘蛛只抓取了头部部分内容, 而由于一般网站的头部都是相同的, 也就容易出现了抓取返回没更新的状态码。 谷歌就针对网站的加载时间更新过算法,把网站加载时间纳入了排名因素, 就算搜索引擎排名不重视这点, 对于用户体验也是有很大影响, 谁也不会愿意多 花时间在一个需要加载几十秒甚至几分钟的网站上面。
措施: 这个就涉及到各种文件及代码的压缩及合并了, 还有就是第一点说的 缓存,鱼和熊掌不可兼得啊,尽量少用图片,Flash,也可以考虑一下是不是屏 蔽图片,Flash。

 4、被降权被K站——老站新域名 由于采集或者其他原因被百度惩罚,权重降了, 百度自然不会稀罕你网站的 内容。最近几个月很多站长们这样干吧,拿被降权的站换域名重新来过,为省事 就换个域名,没啥改动,虽然换域名等于从头再来,也不能保证就脱离关系完全 不被牵连。这种情况下日志会经常出现蜘蛛频繁地抓取首页并返回304,并且很 少抓取内页,建议规规矩矩做站,多弄原创文章。 除了以上提到的网站地图、删除IIS缓存、合并代码等,另外,建议站长们 做好静动态处理,没办法提高更新频率的话推荐文章建议采取随机显示文章的方式。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表