如上图中,展示了用户访问做事器获取页面的一个基本过程。
图中紧张分为两个部分,左侧区域是用户端,右侧区域是做事端,用户真个用户通过手机或者电脑或者智能设备访问做事端页面。
做事端由多少页面构成,这里简化了做事端行为,并且抽象成三个页面A,B,C,正常情形下做事端该当有很多Action工具,Action工具同页面相对应,供应各种做事,我们仅仅简化Page:A,Page:B,Page:C; 用户端便是手机,包括手机操作操作系统,网络层(tcp/ip/udp等),http等协议层,以及浏览器,浏览器内部进行html的解析,css渲染,js实行引擎等等。

范例用户页面浏览行为如下:

1.用户启动浏览器 2.在浏览器地址中输入域名url地址 3.浏览器发起http要求 4.网络层发起tcp要求到做事器,传输http数据包 5.做事器吸收到要求后进行处理,然后返回干系页面内容 6.Tcp吸收返回数据给http协议解析系统 7.http将返回数据返回浏览器 8.浏览器解析html数据,处理htmlhead 9.根据head处理后续事情 10.解析body数据 11.处理装载事宜Onload(已经开始js的实行,在装入数据过程中已经可以实行一些js事宜,详细要根据页面以及浏览器特性而定) 12.根据css进行显示,实行js 13.用户进行后续事情 以上仅仅是范例浏览器行为,详细浏览器行为同页面内容、浏览器特性等都有关系,要详细剖析。

二.页面跳转的分类

根据上面的图1,我们可以有如下分类方法: 一)以跳转地点发生系统那一侧分为:

jsp页面跳转用IE插件打开深度解析各类网站页面跳转方法道理及好坏势比较剖析进阶篇 Angular

做事端跳转

页面跳转发生在做事端,做事端卖力将实际内容获取,然后发送给客户端,这个情形下,一样平常用户不会觉得到跳转的实际行为,因此有些时候我们也不叫做跳转。
详细的做事端跳转行为有很多,各个技能都有各自的特点。
例如:Struts2基于表明做事端跳转、<request.getRequestDispatcher(“xx.jsp”).forward(request,response)、<jsp:forwardpage=””/>等,php也有自己的放回,总之各自有各自的办法,夜岛就不一一举例了,大家自己去搜索吧。

客户端跳转

跳转行为须要客户单程序参与的一种行为(自然不是用户参与的,那个不是本文谈论的)。
在这个过程中,一样平常用户一定会知道的,浏览器地址栏会发生变革,这个分类比较多,我们专门进行一个分类。
二)用户端跳转中,我们根据跳转行为发生在那个软件层次,分为:http层跳转、运用层跳转;运用层跳转连续分为:htmlhead跳转、js跳转等。

http层跳转

http跳转是指server根据事情情形通过http返回状态码,指示客户端浏览器跳转到相应页面的过程,一样平常返回码是302.,下面是http302状态码的定义: Htmlhead头指令跳转 在html代码的head中添加分外标签,如下 <metahttp-equiv=”refresh”content=”5;url=http://www.heimaoke.com/”/> 表示:5秒之后转到黑帽客网站首页。
这个跳转须要浏览用具体解析html后才能进行,慎重更多韶光才能进行,或者情形更繁芜。

Js跳转

通过在html代码中添加js代码,通过js代码实现跳转 <scriptlanguage=”javascript”type=”text/javascript”> window.location.href=”login.jsp?backurl=”+window.location.href; </script> 这个跳转该当比htmlhead跳转更向后延迟。

做事端跳转流程

页面跳转显示的内容发生在做事端,做事端卖力将实际内容获取到,然后发送给客户端。
一样平常用户不会觉得到跳转的实际行为,因此有些时候我们也不叫做跳转 详细事情的参考过程如下:

如上图,用户要求访问PageA,页面A内容指向页面C,干系过程如下: 1.用户通过浏览器访问PageA 2.浏览器通过http处理模块要求GetPageA 3.http处理模块同做事器建立tcp连接,并发出要求获取PageA指令 4.PageA内容指向PageC,通过内部程序将内容C获取到本地 5.PageA吸收到PageC的数据后,将数据返回给http模块 6.http模块吸收到数据后返回给浏览器 7.浏览器吸收到http返回的html数据后,解析html的head 8.处理html的body 9.处理html的onload方法 10.浏览器末了将数据等显示给用户 把稳:图中不同斜线的区域 通过server跳转后,用户看到的是PageC的内容,但是浏览器地址栏中地址是PageA的地址。
优点:跳转行为在server进行,一次tcp连接完成干系操作,对用户是透明的,不会造成迷惑。
缺陷:对用户隐蔽了信息,跳转行为都发生在server端,对server有压力。
server端功能互异,须要分工卖力,当用户访问某功能后,须要返回其余一个功能,这个时候没必要把全部功能都放到一个做事器上。
例如:单点登录:用户在某个做事器上登录成功后,一定要在重新跳转到功能做事器上。
网络支付:用户在银行的网站支付完成后,必须重新定向到其余企业运用做事器上。
适用范围:运用内部系统,适当的包含关系时。

http跳转流程

http跳转是指server根据事情情形通过http返回状态码,指示客户端浏览器跳转到相应页面的过程,一样平常返回码是302,下面是http302跳转的干系参考流程 把稳图中,区域,颜色,斜线等等。

如上图,用户要求访问PageB,页面B内容指向页面C,干系过程如下: 1.用户通过浏览器访问PageB 2.浏览器通过http处理模块要求GetPageB 3.http处理模块同做事器建立tcp连接,并发出要求获取PageB 4.PageB内容指向PageC,PageB的处理模块通过http的重定向协议关照客户端程序,通过发送,302,以及跳到目的地址等进行 5.http处理模块吸收到后直接跳转到目标地址,同时关照浏览器(修正地址栏) 6.http处理模块要求PageC页面内容 7.PageC处理模块处理数据,天生html代码,返回数据给http处理模块 8.http处理模块吸收到数据后放回数据给浏览器 9.浏览器吸收到http返回的html数据后,解析html的head 10.处理html的body 11.处理html的onload方法 12.浏览器末了将数据等显示给用户 优点:相应速率快,在http1.1协议下通过得当的设置可以利用同一个tcp连接,节省网络韶光,做事器及用户端都不须要进行额外的数据处理事情,节省韶光。
缺陷:仅仅能做跳转没有其他功能,基于js及html的跳转可以选择延时跳转,但是302无法选择延时跳转等 适用范围:快速跳转,不须要延时,常常用在两个别系之间跳转等。

Htmlrefresh跳转流程

通过在htmlhead中添加<meta>标签,在标签里指定干系参数,指示浏览器跳转到相应页面,干系跳转必须在http层面将html数据传输给浏览器后,浏览器阐明html代码过程中,创造跳转并且根据跳转指令跳转到相应页面。
参考流程如下图:

如上图,用户要求访问PageB,页面B内容指向页面C,干系过程如下: 1.用户通过浏览器访问PageB 2.浏览器通过http处理模块要求GetPageB 3.http处理模块同做事器建立tcp连接并发出要求获取PageB 4.PageB处理模块处理数据,天生html代码,末了将html通过http协议传输回去。
5.http后将数据放回给浏览器,浏览器开始处理html 6.浏览器首先会处理html的head部分,末了创造有跳转的干系指令 7.浏览器根据跳转指令,重新联系http模块,发出获取PageC的指令 8.http通过tcp连接到做事器,获取PageC内容,然后返回给浏览器 9.浏览器吸收到http返回的html数据后重新处理html,首先解析html的head 10.处理html的body 11.处理html的onload方法 12.浏览器末了将数据等显示给用户 优点:跳转办法灵巧,可以指定延时跳转等等 缺陷:可能多次建立tcp连接,在低速网络下效率更低,摧残浪费蹂躏客户真个韶光

Htmljs实现跳转事情流程

末了来看一下js跳转,事情中每个浏览器都有自己的js实行引擎,实行引擎根据js代码,来动态调用浏览器进行跳转,干系参考代码如下: <scriptlanguage=”javascript”type=”text/javascript”> window.location.href=”login.jsp?backurl=”+window.location.href; </script> 详细js跳转过程如下图:

如上图,用户要求访问PageB,页面B内容指向页面C,干系过程如下: 1.用户通过浏览器访问PageB 2.浏览器通过http处理模块要求GetPageB 3.http处理模块同做事器建立tcp连接同server建立连接,并发出要求获取PageB 4.PageB处理模块处理数据,天生html代码,末了将html通过http协议传输回去。
5.http后将数据放回给浏览器,浏览器开始处理html 6.浏览器首先会处理html的head部分,末了会创造有跳转的干系指令 7.浏览器处理html的body,以及js等,末了根据js的指令指示浏览器获取页面C 8.末了根据js的指令指示浏览器获取页面C浏览器会根据跳转指令,重新联系http模块,发出获取PageC的指令 9.http通过tcp连接到做事器,末了获取PageC的内容,然后返回给浏览器 10.浏览器吸收到http返回的html数据后重新处理html,首先解析html的head 11.处理html的body 12.处理html的onload方法 13.浏览器末了将数据等显示给用户 优点:跳转办法灵巧,可以指定延时跳转等等。
缺陷:可能多次建立tcp连接,在低速网络下效率更低,摧残浪费蹂躏客户真个韶光。
利用访问:快速跳转,不须要延时,常常用在两个别系之间跳转等。

页面跳转最糟糕的情形

当A跳转到B时,我们用符号A–>B表示,下面的循环跳转A–>B–>C–>A,会发生什么事情。
若是循环跳转仅仅发生在server端,则干系系统会迅速被拖垮。
若是循环跳转发生在客户端参与的系统中,很快客户端及server端都会发生问题。
因此循环跳转我们是要严格避免的,办理办法: 1.不跳转,但是不可能完备避免,并且不太可能实现,一样平常系统都是开放的系统,会不断添加功能,纵然当前没有跳转,但是过几个月。





2.冲破跳转的循环,加强系统的检讨力度避免循环跳转的发生。
3.最主要的,监控系统,当创造某个客户端或者系统在单位韶光内有过多的访问时,主动断开连接或者谢绝这个客户真个访问等等。
这个非常主要,一个好的系统是必须有这个功能的,否则纵然没有循环跳转,但是若是用户连续快速访问一个页面也是有很大问题的,例如ie中按下F5键循环刷新页面,若是没有检测机制。



三.总结

每种跳转方法对付用户来讲都带来了内容上的变革,原以为A页面的内容变成C页面内容。
跳转的方法有很多,夜岛SEO无法为大家逐一列举,当我们利用时如何选择那种种别时,须要弄明白每一种跳转的特点,包括:性能,功能等,根据不同网络情形进行不同的选择,例如有的网络建立tcp连接速率慢,这个时候就适宜选择server真个跳转等。
若是担保系统之间的耦合关系更小,系统之间更灵巧则须要采取http办法跳转、js跳转,html跳转等。
有的时候须要在跳转提高行一些判断或者额外的操作等,便是js跳转比较方便,但是也有个浏览器适配的问题。
有时候一个js兼容性不好的js代码可能不事情,造成部分用户无法跳转。
更多黑帽SEO技能知识学习教程请访问夜岛SEO技能博客(www.yeadao.com),一个专注于黑帽SEO快速排名技能研究与学习教程分享的网站!