最佳路线跳转问题.在线等

ziyou_jo 2011-02-19 11:18:41
比如我一个网站有3条路线。分别是www.a1.com、www.a2.com、www.a3.com

用户访问的时候用什么方法检测哪条路线最佳的速度。再跳转到该条路线。

有个我是想法用客户端ping值最优来跳转,但是客户端没有办法获取ping值。所以在此请大侠们给个好建议。小弟感激不尽
...全文
399 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaifadi 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ziyou_jo 的回复:]

我用ajax做过了。
如果在www.a1.com上面检测的话。
www.a2.com和www.a3.com是出错的。不能异地发送不同域的GET。
[/Quote]
你用$.post试,然后在参数后面true/false都试一下。同步/异步!
如果还不行,那我就真想不到还有什么好方法可以测试的客户端到服务端的数据传输时间了。
ziyou_jo 2011-02-19
  • 打赏
  • 举报
回复
我用ajax做过了。
如果在www.a1.com上面检测的话。
www.a2.com和www.a3.com是出错的。不能异地发送不同域的GET。
kaifadi 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 falizixun2 的回复:]

以客户端打开网页执行为开始点,然后返回数据到服务器上,并执行PHP页面为终点,我建议你可以用JQ做一个AJAX的应用,把开始时间记录下来,然后等到其开始访问服务器的把数据返回到客户端,这样不管客户端时间到底是几点,重要的是这2个时间差就是数据传递到服务器的时间!
var t1=new Date().getTime();
$.ajax({
url: 'http://www.a1.com/……
[/Quote]
套上面的结构,你可以这么操作:
var arr=new Array('www.a1.com','www.a2.com','www.a3.com');
var t1=new Date().getTime();
var arr2=new Array();
for(var i=0;i<arr.length;i++)
{
$.get('arr[i]'+'/ceshi.php',function(data){var arr2[i]=new Date().getTime()-t1;});//把时间差赋给数组$arr2;
}
var tt=Math.min(arr2);//找到时间最小的那个;
window.location=arr[tt.index];//导向对应的最快的站点!呵呵。不知道我这么做是不是有点多此一举!
kaifadi 2011-02-19
  • 打赏
  • 举报
回复
以客户端打开网页执行为开始点,然后返回数据到服务器上,并执行PHP页面为终点,我建议你可以用JQ做一个AJAX的应用,把开始时间记录下来,然后等到其开始访问服务器的把数据返回到客户端,这样不管客户端时间到底是几点,重要的是这2个时间差就是数据传递到服务器的时间!
var t1=new Date().getTime();
$.ajax({
url: 'http://www.a1.com/ceshi.php';
type: 'post';
data: {};
success:function(data){var t2=new Date().getTime()-t1;//ceshi返回什么不重要,重要的是数据来回跑花了多少时间,这个时间就是t2;}
}
ziyou_jo 2011-02-19
  • 打赏
  • 举报
回复
用什么方法进入服务器的时间准确呢。

kaifadi 2011-02-19
  • 打赏
  • 举报
回复
让客户端每个服务器都进入一次。A1,A2,A3都进一次,看看客户端进入哪个服务器时间最短,然后就让它进入对应的服务器。
ziyou_jo 2011-02-19
  • 打赏
  • 举报
回复
php是服务器端的。获取的只是服务器端的ping值。
如果采用ping值来做,那么必须获取客户端的ping值才是最准确的。

还有其他方法吗。或许不用ping值来做。
Abin-2008 2011-02-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/gumanren/archive/2010/07/21/5752394.aspx

php ping ip
wzwen 2011-02-19
  • 打赏
  • 举报
回复
这个不要用php
直接用cdn
ziyou_jo 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 falizixun2 的回复:]
引用 5 楼 falizixun2 的回复:

以客户端打开网页执行为开始点,然后返回数据到服务器上,并执行PHP页面为终点,我建议你可以用JQ做一个AJAX的应用,把开始时间记录下来,然后等到其开始访问服务器的把数据返回到客户端,这样不管客户端时间到底是几点,重要的是这2个时间差就是数据传递到服务器的时间!
var t1=new Date().getTime();
$.ajax({
u……
[/Quote]

我用你的方法做。JQ有个getJSON能实现跨域,但是每次执行排在最前面的域名肯定得到的ping值小。

不知道是什么问题
ziyou_jo 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hst0012010 的回复:]
像这种情况一般是判断其IP,网通的用网通的,电信的用电信的,然后就是用IP判断地址,连接就近的服务器
[/Quote]
这种方法不能做到详细速度的分流。

[Quote=引用 11 楼 zjerryj 的回复:]
网上看到一段代码,很有趣,楼主可以试一试:
[code=JScri]var domains = ["www.qq.com", "www.sina.com.cn", "www.sohu.com"];
var output = "";
for (var i = 0; i < domains.length; ++i)
output += " <img src=\"http://" + doma……
[/Quote]

我已经测试做过。不能做到选择到最快的那条线路。

如果能在客户端获取到ping www.a1.com、www.a2.com、www.a3.com ping值的话。那么问题就可以解决了。
张吉Jerry 2011-02-19
  • 打赏
  • 举报
回复
网上看到一段代码,很有趣,楼主可以试一试:
[code=JScrip]var domains = ["www.qq.com", "www.sina.com.cn", "www.sohu.com"];
var output = "";
for (var i = 0; i < domains.length; ++i)
output += "<img src=\"http://" + domains[i] + "\" onerror=\"window.location='http://" + domains[i] + "';\"/>";
document.write(output);
[/code]
  • 打赏
  • 举报
回复
像这种情况一般是判断其IP,网通的用网通的,电信的用电信的,然后就是用IP判断地址,连接就近的服务器
  • 打赏
  • 举报
回复
处于安全考虑,Ajax不可以跨域
[Quote=引用 7 楼 ziyou_jo 的回复:]

我用ajax做过了。
如果在www.a1.com上面检测的话。
www.a2.com和www.a3.com是出错的。不能异地发送不同域的GET。
[/Quote]

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧