QQ空间开始使用Google Gears加速

2009年07月28日 星期二 标签: , , ,

使用 Gears 需要用到一个JS文件:
http://code.google.com/intl/zh-CN/apis/gears/gears_init.js
考虑到Google随时会被 墙 掉的危险,建议把这个小文件放到自己的网站上去,QQ就是这么做的,它把这个文件放在了:
http://imgcache.qq.com/qzone/test/gears/gears_init.js

以下是 QQ 空间在 6月使用过的一个样板文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="utf-8" />
<TITLE> QQ空间加速 </TITLE>
</HEAD>
<BODY>
<PRE>
Google Gears 是一个开源项目,通过向网络浏览器添加新功能使网络应用程序功能更强大。
Google Gears 技术现在支持windows xp系统下的Internet Explorer和Firefox浏览器。
也支持MacOS系统下的Firefox和Safari浏览器,以及linux系统下的Firefox浏览器。
同时谷歌浏览器(chrome)也内置了对gears的支持。
google gears目前仍然是个测试版的浏览器插件,因此有一些功能可能不稳定,或者与其他软件存在冲突。已知可能和google gears冲突的软件包括:httpwatch、yahoo工具条等。

本页面利用google gears的local server功能为浏览器提供QQ空间的页面资源预读功能,从而提高QQ空间的访问速度。
</PRE>

<div id="progress"></div>
<SCRIPT LANGUAGE="JavaScript" src="http://imgcache.qq.com/qzone/test/gears/gears_init.js"></SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--
window._ping = new Image();
window._ping.src = "http://pingfore.qq.com/pingd?dm=my.qzone.qq.com&url=/gearsMng&tt=-&rdm=-&rurl=-&pvid=9644810544&scr=-&scl=-&lang=-&java=1&cc=-&pf=-&tz=-8&ct=-&vs=3.31";

function $(id){return document.getElementById(id)}
function getXHR(){
try{return google.gears.factory.create('beta.httprequest')}catch(e){}
try{return new XMLHttpRequest()}catch(e){}
try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}
try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}
return null;
}
/** 文件列表 **/
var manifestFileLists=[
{storeName:"scriptStore",manifestURL:"scriptVersion.js",cnName:"脚本"},
{storeName:"htmlStore",manifestURL:"htmlVersion.js",cnName:"页面"},
{storeName:"blogStore",manifestURL:"blogVersion.js",cnName:"日志"},
{storeName:"CSSStore",manifestURL:"cssVersion.js",cnName:"样式表"},
{storeName:"msgbStore",manifestURL:"msgbVersion.js",cnName:"留言板"},
{storeName:"mediaStore",manifestURL:"mediaVersion.js",cnName:"flash"},
{storeName:"musicStore",manifestURL:"musicVersion.js",cnName:"音乐"},
{storeName:"photoStore",manifestURL:"photoVersion.js",cnName:"相册"},
{storeName:"mallStore",manifestURL:"mallVersion.js",cnName:"商城"},
//{storeName:"skinStore",manifestURL:"skinVersion.js",cnName:"默认皮肤"},
{storeName:"emStore",manifestURL:"emVersion.js",cnName:"表情"},
{storeName:"moodIconStore",manifestURL:"moodIconVersion.js",cnName:"表情2"},
{storeName:"userIconStore",manifestURL:"userIconVersion.js",cnName:"头像"},
{storeName:"moodStore",manifestURL:"moodVersion.js",cnName:"滔滔心情"},
{storeName:"style1Store",manifestURL:"style1Version.js",cnName:"风格1"},
{storeName:"style2Store",manifestURL:"style2Version.js",cnName:"风格2"},
{storeName:"style3Store",manifestURL:"style3Version.js",cnName:"风格3"},
{storeName:"style4Store",manifestURL:"style4Version.js",cnName:"风格4"},
{storeName:"style5Store",manifestURL:"style5Version.js",cnName:"风格5"},
{storeName:"style6Store",manifestURL:"style6Version.js",cnName:"风格6"},
{storeName:"style7Store",manifestURL:"style7Version.js",cnName:"风格7"},
{storeName:"style8Store",manifestURL:"style8Version.js",cnName:"风格8"},
{storeName:"style9Store",manifestURL:"style9Version.js",cnName:"风格9"},
{storeName:"style10Store",manifestURL:"style10Version.js",cnName:"风格10"},
{storeName:"style11Store",manifestURL:"style11Version.js",cnName:"风格11"},
{storeName:"style12Store",manifestURL:"style12Version.js",cnName:"风格12"},
{storeName:"style14Store",manifestURL:"style14Version.js",cnName:"风格14"},
{storeName:"style15Store",manifestURL:"style15Version.js",cnName:"风格15"},
{storeName:"style16Store",manifestURL:"style16Version.js",cnName:"风格16"},
{storeName:"style17Store",manifestURL:"style17Version.js",cnName:"风格17"},
{storeName:"style18Store",manifestURL:"style18Version.js",cnName:"风格18"},
{storeName:"style19Store",manifestURL:"style19Version.js",cnName:"风格19"},
{storeName:"style20Store",manifestURL:"style20Version.js",cnName:"风格20"},
{storeName:"style21Store",manifestURL:"style21Version.js",cnName:"风格21"},
{storeName:"style22Store",manifestURL:"style22Version.js",cnName:"风格22"},
{storeName:"style81Store",manifestURL:"style81Version.js",cnName:"风格81"},
{storeName:"style88Store",manifestURL:"style88Version.js",cnName:"风格88"},
{storeName:"style151Store",manifestURL:"style151Version.js",cnName:"风格151"},
{storeName:"otherStore",manifestURL:"otherVersion.js",cnName:"其他"}
]
/** 检查gears **/
var localServer;
var store=[];
document.title="正在检查gears...";
if (!window.google || !google.gears) {
alert("NOTE:  您需要先安装google gears.");
location="http://www.google.com/support/gears/bin/answer.py?hl=cn&answer=79847"
} else if (!google.gears.factory || !("create" in google.gears.factory)) {
if(/chrome/i.test(navigator.userAgent)){
alert("    由于谷歌浏览器的google gears插件仍未准备就绪,您暂时无法正常使用本页面。\n\n    这个问题通常发生在谷歌浏览器第一次使用google gears插件进行网站加速的时候。\n\n    谷歌浏览器可能需要一些时间来下载和安装google gears,您可以稍后再访问本页面。")
}else{
alert("您的google gears插件暂时不能正常工作,您可以重启浏览器再试。\n如果仍然不行请重新安装google gears。")
}
} else {
try{
localServer = google.gears.factory.create("beta.localserver");
}catch(e){
if(/Page does not have permission to use Google Gears\./.test(e.message)){
alert("请刷新本页面并在系统显示提示页面的时候勾选“我信任该网站”后点击“允许”按钮,来启动加速功能。");
}
}
}
document.title="正在检查文件版本...";
if(localServer){
/** 进度界面 **/
var tableHTML=["<TABLE bgcolor=black cellspacing=1px width=90% cellpadding=0px><tbody bgcolor=white><tr><th width=\"100px\">资源</th><th>加速进度</th><th width=\"150px\">说明</th></tr>"];
for(var i=0;i<manifestFileLists.length;i++){
var f=manifestFileLists[i];
tableHTML.push('<tr><td align=center>'+f.cnName+'</td><TD><TABLE width=100% cellspacing=0 cellpadding=0><TR height=20px><TD width="0%" bgcolor="green" id=progressBar'+f.storeName+'></TD><TD bgcolor="red" width=100%></TD></TR></TABLE></TD><td id=version'+f.storeName+' align=center>已加载<span id=progress'+f.storeName+'>0</span>/<span id=urlCount'+f.storeName+'>...</span></td></tr>');
}
tableHTML.push("</tbody></TABLE>")
$("progress").innerHTML=tableHTML.join("");
/* 收集文件信息 */
var request=[];
for(var i=0;i<manifestFileLists.length;i++){
request[i] = getXHR();
var f=manifestFileLists[i];
if(request[i]){
request[i].open('GET', f.manifestURL);
request[i].onreadystatechange = new Function(
"if(request["+i+"].readyState==4){checkCacheStatus("+i+")}");
request[i].setRequestHeader("If-Modified-Since","0");
//            request[i].setRequestHeader("If-None-Match","0");
request[i].send();
}
}
}
var urlHash={};
function checkCacheStatus(i){
f=manifestFileLists[i];
try{request[i].status}catch(e){document.title="资源需要同步";return;}
if(request[i].status==200){
eval("f.info="+request[i].responseText);
var e=f.info.entries;
/*去重检测
for(var j=0;j<e.length;j++){
if(!urlHash[e[j].url])urlHash[e[j].url]=true;
else $("progress").innerHTML+="<br>"+e[j].url;
}*/
$("urlCount"+f.storeName).innerHTML=e.length;
var t=["资源数:"+e.length];
for(var j=0;j<e.length;j++)t.push(e[j].url);
$("urlCount"+f.storeName).parentNode.parentNode.title=t.join("\n");
if(e.length==0){
checkComplete(f,{empty:true})
localServer.removeManagedStore(f.storeName);//销毁存储空间
}else{
var f=manifestFileLists[i];
store[i] = localServer.createManagedStore(f.storeName);//获取存储空间
if(store[i].currentVersion){
if(f.info.version==store[i].currentVersion){
$("progressBar"+f.storeName).style.width="100%";
$("version"+f.storeName).innerHTML="已经是最新版" ;
}else{
$("progressBar"+f.storeName).style.width="0%";
$("version"+f.storeName).innerHTML="版本已经过期";
document.title="部分已有资源需要更新";
return;
}
}else{
document.title="资源需要同步";
return;
}
}
}else{
$("urlCount"+f.storeName).parentNode.innerHTML="资源无法下载";
$("progressBar"+f.storeName).parentNode.parentNode.parentNode.parentNode.innerHTML="<center>打开"+f.manifestURL+"的时候遇到问题</center>";
document.title="资源列表下载失败";
return;
}
for(var i=0;i<manifestFileLists.length;i++)
if(!manifestFileLists[i].info)return;
if(document.title=="正在检查文件版本..."){
document.title="全部资源都是最新,无需更新";
$('btn1').disabled=true;
}
}
function checkProgress(f,details){
var e=$("progress"+f.storeName);
if(e)e.innerHTML=details.filesComplete;
$("progressBar"+f.storeName).style.width=(100*details.filesComplete/details.filesTotal)+"%";
f.complete=details.filesComplete==details.filesTotal;
timer=setTimeout(checkAllComplete,100);
}
function checkComplete(f,details){
$("progressBar"+f.storeName).style.width="100%";
if(details.empty)
$("version"+f.storeName).innerHTML="加速列表为空,缓存已清理";
else
$("version"+f.storeName).innerHTML="版本已是最新";
f.complete=true;
f.error=false;
$("progressBar"+f.storeName).innerHTML="";
timer=setTimeout(checkAllComplete,100);
}
function checkError(f,error){
if(!error.message) return;
$("progressBar"+f.storeName).innerHTML="<center>"+error.message+"</center>";
f.complete=true;
f.error=true;
timer=setTimeout(checkAllComplete,100);
}
function checkAllComplete(){
clearTimeout(timer);
var completeCount=0,errorCount=0;;
for(var i=0;i<manifestFileLists.length;i++){
if(manifestFileLists[i].error){
errorCount++;
}
if(manifestFileLists[i].complete){
completeCount++;
}
}
if(completeCount!=manifestFileLists.length){
document.title="更新中,已完成"+completeCount+"/"+manifestFileLists.length;
}else{
if(errorCount==0){
document.title="全部资源都已更新";
$('btn1').disabled=true;
}
else{
if($('btn1').disabled) alert("加速过程已经完成,有"+errorCount+"组文件没有全部完成下载,这不会影响您的使用。您也可以再次点击“启用加速”按钮来尝试下载。")
document.title="更新已完成,部分资源尚未更新";
$('btn1').disabled=false;
}
}
}

var timer;
function checkGears(){
window._ping.src = "http://pingfore.qq.com/pingd?dm=my.qzone.qq.com&url=/gearsEnable&tt=-&rdm=-&rurl=-&pvid=9644810544&scr=-&scl=-&lang=-&java=1&cc=-&pf=-&tz=-8&ct=-&vs=3.31";
for(var i=0;i<manifestFileLists.length;i++){
if(store[i]){
var f=manifestFileLists[i];
f.complete=false;
f.error=false;
store[i].manifestUrl = f.manifestURL;
store[i].onprogress=function(f){return function(details){checkProgress(f,details)}}(f)
store[i].oncomplete=function(f){return function(details){checkComplete(f,details)}}(f)
store[i].onerror=function(f){return function(error){checkError(f,error)}}(f)
store[i].checkForUpdate();
}
}
}
function removeStore() {
window._ping.src = "http://pingfore.qq.com/pingd?dm=my.qzone.qq.com&url=/gearsDisable&tt=-&rdm=-&rurl=-&pvid=9644810544&scr=-&scl=-&lang=-&java=1&cc=-&pf=-&tz=-8&ct=-&vs=3.31";
for(var i=0;i<manifestFileLists.length;i++){
try{
localServer.removeManagedStore(manifestFileLists[i].storeName);//销毁存储空间
}catch(e){
if(e.message)alert("释放文件过程发生了以下异常:"+e.message);
location.reload();
}
}
location.reload();
}
setTimeout("$('btn2').disabled=false",1000)

//-->
</SCRIPT><BR>
<button onclick="checkGears();disabled=true;"  id="btn1">启用加速</button>
<button onclick="removeStore()" disabled id="btn2">取消加速</button>
</BODY>
</HTML>
<!--[if !IE]>|xGv00|557b81906f7ebed089b0dd2d76f3165d<![endif]-->

Rand Posts:

本文分为多页,请继续浏览: 1 2

对《QQ空间开始使用Google Gears加速》有 34 条评论

  1. onlyjulien 说:

    看好Google,BS腾讯……
    QZONE一贯高效的代码无与伦比的速度以及坚若磐石的稳定性常常让人内牛满面……

  2. 沈默 说:

    我使用的是世界之窗,为什么允许运行Gear了,但每次打开都会弹出一个反应有问题的框,让我去谷歌解决,遂禁用Gear,这样可行吗?

  3. Louis 说:

    如果是校园网的话,会有两个 Gears 加速。

    http://twitpic.com/bwn8n

  4. soulhuman 说:

    虽然我不喜欢TX,但感觉腾讯一直在改变,或者说山寨。

  5. 莫奈 说:

    QQ空间很少用

  6. QQ空间开始使用Google Gears加速 » Google(谷歌)实验室–专注于Google产品与文化–非官方 说:

    [...] 关于google gears的说明,请参考以下地址:http://code.google.com/intl/zh-CN/apis/gears/终于,QQ也在赶潮流…..关于 QQ 空间使用 Gears 的技术信息,有兴趣请浏览第二页(纯源码/无精彩内容) [...]

  7. 侯凯 说:

    很好,用的人多了,我了就给博客加上!

  8. 哈根达斯月饼 说:

    QQ真的很强大,过几年绝对有可能成为全球最大的互联网公司。

  9. stranger 说:

    非QZone用户表示纷纷表示影响不大。
    Gears对我来说,除了Google的服务以及Wordpress后台加速外,其他地方都还真没怎么用到。
    腾讯这一举动可能只是小试一下而已。

  10. www.cnwxcs.cn 说:

    我个人对腾讯qq空间不是太感冒

  11. 乐玩族 说:

    本人QQ空间已经闭关多日了

  12. 经济危机 说:

    第一次来这里发现 模板好漂亮啊.

  13. 可颂坊 说:

    互联网最牛的QQ,什么到了QQ手上都会产生巨大的财富效应。

  14. 广州网页设计 说:

    我不喜欢QQ空间这样东西,我还是喜欢博客。

  15. 台湾茶 说:

    好东西,回去用用。

  16. 广州seo 说:

    还真有点管用哦,不过我是帮别人弄,自己不喜欢玩这样的东西。

  17. 钢丸 说:

    我的空间也早就关闭了,不是学生时代了,不会和其他同学互相炫耀了。

  18. 可颂坊 说:

    WP也加速,但怎么也感觉不到有什么改进。

  19. 广州工商注册 说:

    对于QQ空间我没什么要求,为什么呢,因为我不用。

  20. 广州汽车租赁 说:

    qq空间真的在打开图片时比较慢,有google gears 这个希望好点。

  21. 广州注册公司 说:

    我要严重声明,我已经很久没用QQ空间了,楼主很抱歉,浪费你一片心意了,

  22. forextrade 说:

    我也不用那个什么空间的,菜鸟才用

  23. ex 说:

    感觉不错,可以试试,谢谢楼主分享!

  24. 煤气发生炉 说:

    腾讯就是啥都搞!

  25. COM 说:

    那速度不就很快了?

  26. lewanzu 说:

    没感觉速度提升啊

  27. 证券公司排名 说:

    博主忽悠人,我用了都没有反应的????

  28. 基金代码查询 说:

    挺好的!

  29. 汤博客杂志站 说:

    好久没来你博客看了。今天到访,文章不错。。望回访。:》

  30. finance 说:

    恩,可以试试,不错

  31. PS 说:

    Google 越来越强了

  32. 平安证券 说:

    还没用过google gears ,有机会要试试

  33. 仓库管理系统 说:

    其实我更看好腾讯 。。。估计现在除了百度,没有第二个互联网平台对中国人的影响如此之深。至少目前来说很乐观。。

  34. 病毒性感冒 说:

    我的网速够快的了,,呵呵

发表一条评论