通过flash script3实现自动选择最快的镜像站

自动选择最快的镜像站代码,通过flash script3来实现,效果非常棒
实现原理:
通过flash 加载2个镜像网站的相同大小的一个swf文件,加载结束以后,统计2个文件的加载时间,时间越短,当然加载速度越快了,然后比较大小,自懂跳转到对应的网址.一下是loading.swf源码
以下为引用的内容:
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.*;
import flash.events.*;
import flash.external.ExternalInterface;//调用js的包

loader.swf源文件代码(loader.swf,和loader2.swf是一样的,只是名称不一样,防止从缓存加载),这个文件我设置5k大小。这个大小根据几个网站的速度来设置。控制判断时间在2秒内。
Security.allowDomain("www.zh002.cn ");//这个事跨域权限设置的,大家可以找下着方面的资料
Security.allowDomain(www.zh005.cn);

crossdomain.xml跨域文件设置

//允许所有域

小结:

import flash.events.ProgressEvent;
var loader1_var:uint=0;
var loader2_var:uint=0;
var t1:uint=0;
var t2:uint=0;
var _global_date1:Date=new Date();
var _global_date2:Date=new Date();
var time1:uint=0;
var time2:uint=0;
var success1:Boolean=false;
var success2:Boolean=false;

addEventListener(Event.ENTER_FRAME,geturl);

function randRange(min:uint, max:uint):Number {
var randomNum:uint = Math.floor(Math.random() * (max – min + 1)) + _global_date1.getMilliseconds()+_global_date1.getDate();
return randomNum;
}

var dd:uint=randRange(1,10000);//设置随机数,防止ie加载缓存的swf

var url1:URLRequest=new URLRequest(“http://www.zh002.cn/loader.swf?ddd=”+dd);
var url2:URLRequest=new URLRequest(“http://www.zh005.cn/loader2.swf?ddd=”+dd+1);
var url3:URLRequest=new URLRequest(http://www.zh002.cn/index.html);
var url4:URLRequest=new URLRequest(http://www.zh005.cn/index.html);

var loader1:Loader=new Loader();
loader1.load(url1);
loader1.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete1);
loader1.contentLoaderInfo.addEventListener(Event.OPEN, openHandler1);

var loader2:Loader=new Loader();
loader2.load(url2);
loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete2);
loader2.contentLoaderInfo.addEventListener(Event.OPEN, openHandler2);

var text1:TextField=new TextField();
text1.width=300;
text1.text=”Redirecting. please wait…”;
addChild(text1);

function openHandler1(evt:Event):void{
_global_date1=new Date();//打开远程文件的时候开始计数

}
function openHandler2(evt:Event):void{
_global_date2=new Date();//打开远程文件的时候开始计数
}

function onComplete1(evt:Event):void{

var date2:Date=new Date();
time1=1000+date2.getSeconds()*1000+date2.getMilliseconds()-_global_date1.getSeconds()*1000+_global_date1.getMilliseconds();
success1=true;//结束的时候共用了多少时间,并设置变量标注加载完成
}

function onComplete2(evt:Event):void{
var date3:Date=new Date();
time2=date3.getSeconds()*1000+date3.getMilliseconds()-_global_date2.getSeconds()*1000+_global_date2.getMilliseconds();
success2=true;//结束的时候共用了多少时间,并设置变量标注加载完成
}

function geturl(evt:Event):void{
if(success1==true&&success2==true){
removeEventListener(Event.ENTER_FRAME,geturl);
text1.text=”all success:”+time1+”;”+time2;
if(time1 navigateToURL(url3,”_self”);

}
else
{
navigateToURL(url4,”_self”);

}
}

}

 

原来很简单,通过加载2个镜像网站的一个小文件来判断加载速度,这个在过内外的企业网站的非常有用,这个代码就是因为客户需要而想出来的。客户有个网站,服务器是中国大陆的,但他人在德国,也有很多国外的客户。国外访问国内的速度非常慢,企业网站有个很大的flash片头文件,如果没有用镜像网站的,德国打开中国网站需要近1分钟的时间,如果用了镜像技术,只要2秒钟来判断,打开网站总的不超过5秒。之前也有用了很多网站的js代码,但效果不理想,可能跟国内外的dns解析时间有关系。所以一直不准确。后来用了这个ac3的代码判断,客户非常满意

如果是多个网站,可以把加载的时间压入数组,然后通过数组大小比较,可以很快找到速度快的镜像网站

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注