欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

301,302,304,404,200的意思

shiping1 的头像

Http状态是200,页面没有任何错误发生

 

2009-12-30 10:22

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

当这些缓存有效的时候,通过 HttpWatch 查看一个请求会得到这样的结果:
第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200

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

来自 http://hi.baidu.com/netfate/item/bcb394ff3dbb76763c198b79

 

当你的网站在升级、修改的时候,你最好让访客转到指定的页面,而不是没做完的页面或者是错误页。
这时我们做一个302转跳就好。

301 永久重定向 对搜索引擎友好

 

HTTP 301 跳转和302跳转的区别

 HTTP 301 跳转和302跳转的区别


301和302 Http状态有啥区别?

301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:

301 redirect: 301 代表永久性转移(Permanently Moved),

302 redirect: 302 代表暂时性转移(Temporarily Moved ),

当然 Http 状态 200 标示没有任何问题发生。

这两种转移在使用的时候有啥好处或者问题?

301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

302 重定向是临时性转移。

在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。

研究搜索引擎优化(SEO)的人,应该都知道,301,302 使用不当,或者灵活使用会有不错的效果的,比如参看下面文章

302转向与网址劫持

301转向和网址规范化

301重定向的实现方法
51window提供的301转向的代码
一个网站十几个域名的重定向经验谈
几个常用的301重定向

如果是运维人员,配置WEB服务器的一些设置就可以实现跳转,比如下面一些关于IIS实现重定向的文章

将请求重定向到文件、目录或程序 (IIS 6.0)

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/iis/fbcccfce-6695-4f92...

重定向参考 (IIS 6.0)

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/iis/41c238b2-1188-488f...

其他WEB服务器也可以通过设置实现跳转,我就不罗列了。
 
从技术人员来说我们比较常用的跳转方法有以下几种:

我们使用 Fiddler 工具来监控的下面提到的几种方法,看跳转过程中HTTP状态码是301?302?200?:
 
方法1:Response.Redirect("Test.aspx");

状态码 301  临时性跳转 (应该是302吧,反正肯定不是301)
 
方法2:<meta. http-equiv="refresh" content="5; URL=Test.aspx" />

meta. fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会 被判断为spam。这种跳转方式,整个跳转过程中,页面Http状态都是200,即,页面没有任何错误发生。
 
方法3:Server.Transfer("Test.aspx");

这种跳转方式,整个跳转过程中,页面Http状态都是200,即,页面没有任何错误发生。

方法4:URLRewrite

这种跳转方式,整个跳转过程中,页面Http状态都是200,即,页面没有任何错误发生。

没有一种是301跳转。也就是上面几种跳转方式都用不到301跳转的好处。

使用301跳转有啥好处呢?

SEO(搜索引擎优化)中提到一点:如果我们把一个地址采用301跳转方式跳转的话,搜索引擎会把老地址的PageRank等信息带到新地址,同时在搜索引擎索引库中彻底废弃掉原先的老地址。
 
如何编码实现301跳转呢?

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","...");

这里的 ... 表示你要跳转去的页面。

来自 http://www.51testing.com/?uid-43487-action-viewspace-itemid-191187

 

 

 

 

 

 

普通分类: