`

【如何高性能建站】- 避免使用重定向(1)

阅读更多

 

重定向:

就是从一个URL到另一个URL,它会使你的页面变慢。重定向有很多种,“301 Moved Permancenty”“302 Moved Temporarily”是最常用的两种。

301:

用户请求的文档在其他的地方,新的URLLocation中给出,浏览器自动访问新的URL。,并且是永久性转移。

302

搜索引擎返回302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取。(存在滥用情况)

 

扩展:

301重定向是一种非常重要的自动转向技术。在更换域名的时候起着不可替代的作用,他不仅可以实现网页的批量指定转跳,还可促进搜索引擎优化效果。不同于302,从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而受到丝毫影响。当然各个搜索引擎对301的处理方式是不一样的。

 

302的三大危害:

一:黑帽SEO滥用

  302重定向代表着暂时性转移,程序员设计一段代码,使点击访问的目标网址出现在黑帽SEO所要优化的网址之内,形成一段由“优化网址+目标网址”组合而成的302网址,藉此接获用户点击,骗取网页权重。目前,302重定向已经被视为垃圾信息,遭到各大搜索引擎的打击。

 

二:消耗优化网址资源

 302重定向的排列组合,有些站长使用302重定向并不是为了欺骗搜索引擎,仅仅是为了防止自己网站的通过外部链接流向其他权重。这种302重定向很容易遭到恶意访问,访问者将“优化网址”与任意网址甚至是一段字符串组合,滥用网站本身的302重定向功能消耗服务器资源,返回大量的302404代码,影响网站的稳定性。

 

三:跨站脚本攻击

 跨站脚本攻击漏洞,根据网站安全监测工具的报告,这种302重定向实际上是一种跨站脚本攻击漏洞,恶意用户可以使用该漏洞来盗取用户账户信息、模拟其他用户身份登录,更甚至可以修改网页呈现给其他用户的内容。极大的妨害了网络安全和用户体验。

 

除了301302,还有其他方法实现重定向。HTML文档的头中包含的meta refresh标签可以在content属性所指定的秒数之后重定向到url属性的地址。就是的document.location可以设置。但是如果必须采用重定向,作者推荐使用标准的3**HTTP状态码,这主要是为了确保后退按钮可以正常工作。

 

重定向是如何损伤性能的

如果第一个请求就是重定向,在重定向完毕并且HTML文档下载完毕之前,是没有任何东西显示给用户的,就像jscss引起的白屏一样。在用户和HTML之间插入的重定向延迟了延迟了页面中的所有东西。

 

为什么使用重定向

用处:网站重新设计,跟踪流量,记录广告点击,建立已于记忆的url

 

 

下面是一些使用重定向的典型解决方案:
1.缺少结尾的斜线:我们在请求http://www.taoche.com/buycar时会引起重定向url变为http://www.taoche.com/buycar/ (多了一个杠),这是一种最为浪费,发生也最为频繁的重定向。原因是:它允许自动索引(autoindexing,自动转到默认的index.html上)并且能够获得与当前目录相关的URL(如logo.gif)然而,很多流行的web页面并不依赖于自动索引,而是依赖特定的URL和处理器。另外,URL通常也与根目录相关而不是和当前目录相关。

注意当主机名后缺少皆为斜线时是不会发生重定向的,例如http://www.xxx.com不会产生重定向,但是也会加上斜杠http://www.xxx.com/。原因是,浏览区在进行GET请求时必须指定一些路径,如果没有路径,就会简单的使用文档根(/)。

2.连接网站:当我们改变网站后端逻辑的时候,很可能所需的url也变了,这时候就需要将用户从旧的url转移到新的url,这个时候我们往往使用最多的也是重定向。我们应该尽量去避免。如果整合两个后端可以避免,但是需要更多的开发工作。
3.跟踪站内流量:使用Referer日志,referrer网站来路;访问者进入网站任何途径。HTTP Refererheader的一部分,当浏览器向web服务器发出请求的时候,一般会带上Referer,告诉服务器用户从那个页面连接过来的,服务器藉此可以获得一些信息用于处理。


4.跟踪出站流量:跟踪出站流量的时候不能使用使用referrer。我们打开百度,搜索一个关键词,连到其他网站,发现就会有一次重定向。但是重定向是耗费性能的,所以我们看雅虎搜索http://www.yahoo.cn/,相同的操作并没有重定向,雅虎使用的是信标,信标(beacon):

可以在HTTP请求的URL中包含跟踪信息。跟踪信息可以从信标web服务器的访问日志中提取出来。信标响应通常是一个1px*1px的透明图片。书中还提到一个更为优秀的204响应,因为他更小,从来不会被缓存,而且绝不会改变浏览器的状态。但是我没有查到相关的资料。

在雅虎搜索中,目标是无论任何用户单击搜索结果连接时都要发送一个信标,在通过为这个连接提供的onclick处理器来完成。

注意,发送信标和页面自身卸载之间存在竟态情形,图片信标的onload处理器可以确保在卸载文档之前信标传送完毕。

代码实例:

 

[html]
  1. <ahrefahref="http://en.wikipedia.org/wiki/Performance"  
  2.   
  3.    onclick="resultBeacon(this);return false;">Performance - Wikipedia</a>  
<ahref="http://en.wikipedia.org/wiki/Performance"

   onclick="resultBeacon(this);return false;">Performance - Wikipedia</a>

 

[javascript]
  1. <script>  
  2.   
  3. var beacon;  
  4.   
  5. function resultBeacon(anchor){  
  6.   
  7.     beacon = new Image();  
  8.   
  9.    beacon.onload = gotoUrl;  
  10.   
  11.    beacon.onerror = gotoUrl;  // in case the image fails, we still want to redirect theuser   
  12.   
  13.      beacon.anchor= anchor;  
  14.   
  15.     beacon.src ="http://rds.yahoo.com/?url=" +escape(anchor.href);  
  16.   
  17. }  
  18. function gotoUrl() {  
  19.   
  20.    document.location = beacon.anchor.href;  
  21.   
  22. }  
  23.   
  24. </script>  
<script>

var beacon;

function resultBeacon(anchor){

    beacon = new Image();

   beacon.onload = gotoUrl;

   beacon.onerror = gotoUrl;  // in case the image fails, we still want to redirect theuser

     beacon.anchor= anchor;

    beacon.src ="http://rds.yahoo.com/?url=" +escape(anchor.href);

}

 

function gotoUrl() {

   document.location = beacon.anchor.href;

}

</script>

 

这样的写法可能会和使用重定向一样慢,因为两种技巧都必须一个额外的HTTP请求。稳重还提到一种XMLHttpRequest来发送信标,非常的复杂,就不说了。说到这里,可能会觉得信标无用,但是对于有target=”_bank”属性的连接而言,信标能很好的工作,因为这种情下不会出现竟态情形,简单的信标就能很好的工作,弹出新的页面或者弹出式广告不回卸载前文档,图片信标的请求能够顺利完成而不会被中断,雅虎搜索就是这个道理。

5.美化url:

有的时候某个url很复杂,不利用用户去输入,我们就提供一个友好的url来给用户,这个时候也会发生重定向。我们也是用了url的重写,使用的是ISAPI_REWRITE,URL重写组件。

 

分享到:
评论

相关推荐

    IIS建站和FTP建站

    【IIS建站】 IIS(Internet Information Services)是Windows操作系统中的一个组件,它提供了用于发布Web内容的服务。建立IIS站点的过程相当直观,主要涉及以下几个步骤: 1. **启动IIS管理器**:首先,通过右键...

    建站之星2.32

    在使用"建站之星2.32"时,用户需要熟悉这些基本组件和它们的功能,以便有效地构建和管理自己的网站。了解如何配置`.htaccess`文件、创建定制的错误页面、以及处理用户输入是至关重要的。同时,遵循正确的安装和使用...

    网站建站与服务器设置整体优化

    网站建站与服务器设置的整体优化是提升网站性能和搜索引擎排名的关键环节。首先,我们需要了解当前网站的基本状况。根据描述,该网站拥有多个二级域名,并且在不同搜索引擎中有大量的页面被收录,但PR值(PageRank)...

    建站PHP、ASP、SEO

    改版时,应尽量保持URL结构的稳定,避免大量重定向,同时更新内容并增加高质量外链,以促进搜索引擎的重新抓取和索引。改版后的页面风格应简洁且利于用户体验,同时确保所有图片都有alt标签,以提高可访问性和搜索...

    手机站优化标准.docx

    13. **适配不同终端**:随着手机终端的发展,推荐使用HTML5或XHTML建站,并实现自适应布局,以适应不同设备的屏幕尺寸。 14. **高低端机适配**:针对不同性能的手机,可使用不同域名进行区分,如高端机使用i.a.com...

    AMR超级站群系统 v1.1.rar

    AMR超级站群系统是一款全自动采集建站的web应用程序,目前支持95%以上的网站采集。 相对于市面上其他小偷程序或采集工具,本程序具有如下特点: 1.安装方便、使用简单:只需输入想要采集的目标站网址信息,即可将...

    Linux操作系统基础教程

    Linux的核心具有 Windows 无法比拟的稳定性和高效率,在不使用 X Windows 的情况 下,它占用系统资源较少,可以使一台 Intel486摇身一变成为高效工作站。对于想要学习 UNIX的用户来说,使他们熟悉 UNIX 操作环境,...

    AMR超级站群系统源码 v1.0

    AMR超级站群系统源码 v1.0,AMR超级站群系统是一款全自动采集建站的web应用程序,目前支持95%以上的网站采集。相对于市面上其他站群程序或采集工具,本程序具有如下特点:安装方便、使用简单:只需输入想要采集的...

    AMR超级站群系统最新官方版

    AMR超级站群系统最新官方版,AMR超级站群系统是一款全自动采集建站的web应用程序,目前支持95%以上的网站采集。相对于市面上其他站群程序或采集工具,本程序具有如下特点:安装方便、使用简单:只需输入想要采集的...

    CDN

    CDN的工作原理是,当用户请求访问某个网站时,请求会被重定向到离用户最近的CDN节点,该节点上存储了网站的部分或全部内容,从而减少了网络延迟,提高了用户体验。 CDN的核心技术包括: 1. **全局负载均衡**:CDN...

Global site tag (gtag.js) - Google Analytics