前言
我们在在学习java的struts框架的时候, 或者webpy的时候都会设计到重定向的,这篇文章就将介绍重定向的负载均衡
什么是重定向
重定向就是将一个请求重定定一个方向转到其它的位置
你如果输入baidu.com, 使用firefox浏览器(F12)查看请求的过程,我们会发现如下:
很直观的看到,访问baidu.com之后给我们返回了一个302状态
302: 暂时性转移
301: 永久性转移
响应头中有一个Location字段:这个就是告诉浏览器原地址不存在,给了我一个正确的地址,接下来就请求到了www.baidu.com这个地址
整个过程是请求了两个地址, 所以比直接访问耗时
为什么要是用重定向
知道了什么是重定向, 我们就会发现这样提高了用户的体验度, 如果用户输入baidu.com不能到www.baidu.com,那用户肯定感觉很奇怪了
其实另一方面是为了给集中权重.让网站的权重都集中到某一个域名上.百度爬虫在抓取你的网站的时候就会把带www和不带www的都当成www的,这样增加了权重,便于搜索引擎收录
重定向和转发的区别
相信很多做java后端开发会遇到这个问题
1.重定向是一个客户端的行为,相当于是两次不同的请求, 只是给我们的感觉像是一次请求.地址栏的URL是会变化的
2.请求转发是服务端的行为,地址栏的URL不会变
举例子:
请求重定向:就好比我们找一个A广告公司给设计名片,A明确告诉我们他们不会设计,就让我们找B公司,结果B公司给我设计好了,所以我们会对外宣称是B公司给我们设计的名片,(所以我们就相当于发送了两次次请求,URL地址栏里就从A变成了B公司)
请求转发:同样去找A公司给设计名片,A公司虽然不能设计但是他们接下了我们的活,把这项任务外包(转发)给B公司,最终我们会把钱给A公司,也就会对外宣称是A公司给我们设计的名片这就是请求重定向(所以我们就相当于只对A发送了一次请求,URL地址栏里依然是A公司)
重定向应用于负载均衡
这个图我们根据序号就可以很好的理解整个流程,可能负载均衡服务器不止一台,也是一个集群
优点
那就是简单,实现起来比较简单
缺点
- 本来是一次请求, 现在变成了两次请求, 速度肯定会有影响
- 重定向服务器也是一个瓶颈.所有的请求都要经过这个服务器, 它的性能也会影响整个系统
- 使用HTTP返回码302重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名
综合
一般使用这种重定向方式的不多