ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript ページのレンダリング速度テスト スクリプトの共有_JavaScript スキル

JavaScript ページのレンダリング速度テスト スクリプトの共有_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 16:52:211296ブラウズ

コードをコピー コードは次のとおりです:
/* レンダリング開始のタイムスタンプを取得して保存しますそれを配列 PAGE_SPEED_TIME* /
< ;head>
......

コードをコピー コードは次のとおりです:

....
/* ページ 最後に、ページの読み込みにかかる時間を計算します*/



page_speed_v2.js ファイルの内容を分析してみましょう。このスクリプトを読みやすくするために再フォーマットします。

コードをコピー コードは次のとおりです:

/* 执行匿名函数构建对象PageSpeed */
;(function() {
    PageSpeed = {};/* 这里没有 var 关键字, 相当于引用的是 window.PageSpeed */

 /**
     * 绑定createScript方法
  *
  * @param String a script标签的src属性的值
  * @param String b script标签的id属性的值
  */
    PageSpeed.createScript = function(a, b) {
        var c = null;

        if (document.getElementById(b)) { /* script标签已经存在 */
            c = document.getElementById(b)
        } else { /* 不存在, 创建script标签 */
            c = document.createElement('script');
            var d = null;
            if (document.getElementsByTagName) {
                d = document.getElementsByTagName('head')[0] || document.documentElement;
            } else {
                d = document.documentElement;
            }
            d.insertBefore(c, d.firstChild); /* 调用insertBefore方法, 将新创建的script标签插入为第一个子元素 */
        }

  /* 这里的花括号起到代码片段分组功能 */
  {
            c.setAttribute('type', 'text/html');
            c.setAttribute('style', 'display:none;');
            c.setAttribute('charset', 'gb2312');
            c.setAttribute('id', b);
            c.setAttribute('src', a);
        }

        return c; /* 返回创建成功的script标签元素 */
    };

 /**
     * 绑定 submitDataForPageSpeed 方法
  *
  * @param Object a Map对象
  */
    PageSpeed.submitDataForPageSpeed = function(a) {
        var b = {
            'name': '',
            'rate': 0
        };
        b.name = a.name;
        b.rate = a.rate;

  /* a.PAGE_SPEED_TIME数组的最后一个元素减去第一个元素 */
        b['1'] = a.PAGE_SPEED_TIME[a.PAGE_SPEED_TIME.length - 1] - a.PAGE_SPEED_TIME[0];

        for (var i = 1; i < a.PAGE_SPEED_TIME.length - 1; i++) {
            b[(i + 1) + ''] = a.PAGE_SPEED_TIME[i] - a.PAGE_SPEED_TIME[0]
        }

  /* 提交速度测试结果的目的脚本 */
        var c = 'http://pagespeed-ied.qq.com/r.cgi';

  /* 遍历 b 数组的元素, 构建 query string */
        var d = [];
        for (var p in b) {
            d.push(p + '=' + b[p])
        }
        c += '?' + d.join('&');

  /* 创建script标签提交测速结果 */
        PageSpeed.createScript(c, 'submitForPageSpeed')
    };

 /**
  * 绑定 defaultSubmit 方法
  *
  */
    PageSpeed.defaultSubmit = function() {
        var a = '';
        try {
            a = location.host
        } catch(e) {}

var b = {
'name': a,
'rate': 1,
'PAGE_SPEED_TIME': []
};

if (!b.name) {
return
}

if(!(typeof(page_speed_time)== 'object' && page_speed_time instanceof array)){

/* 新しいタイムスタンプを取得 */

PAGE_SPEED_TIME.push(new Date().getTime());


b.PAGE_SPEED_TIME = PAGE_SPEED_TIME;

/*

* ここで新しい変数 aaa が必要な理由がわかりません。直接使用することはできないのでしょうか?

* try ... catch 構造は新しい変数 aaa を使用しますが、その後一度も使用されていません。なぜ aaa にする必要があるのでしょうか?
*/
var aaa = '';
try {
aaaa = location.host
} catch(e) { }

var c = Math.floor(Math.random() * 10000);

If (aaa == "ktv.qq.com" || aaa == "ttd.qq.com" || aaa == "tian.qq.com" || aaa == "sura.qq.com" " || aaa == "gw.tnt.qq.com" || aaa == "007.qq.com") {

c = Math.floor(Math.random() * 1000);

}

/* ランダムな確率でデータを送信します */

If (c PageSpeed.submitDataForPageSpeed(b);
}
};

/** * バインド送信メソッド (CDN 速度テストに使用?)

*
* @param String a Name
*/
PageSpeed.submit = function(a) {
var b = PageSpeed.cdn_page_speed_submitData;
var c = {};
for (var p in b) {
c[p] = });

try {
/* 1 秒後にデータの送信を試みます*/
setTimeout(function() {
PageSpeed.defaultSubmit()
},
1000);

} キャッチ(e) {}


/* 最後のコメント、2 番目の段落は 32 桁の 16 進数で、コンテンツのバージョンをマークするために使用される ETag に似ている必要があります */
/* |xGv00|ca82276cd78ac911d3d4310ba1408236 */


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。