欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript頁面渲染速度測試腳本分享

 更新時間:2014年04月15日 08:31:04   作者:  
這篇文章主要介紹了javascript頁面渲染速度測試腳本,計算瀏覽器渲染HTML頁面所需要的時間,需要的朋友可以參考下

復制代碼 代碼如下:
/* 獲取渲染開始的時間戳, 保存在數(shù)組PAGE_SPEED_TIME中 */
<html><script type="text/javascript">/*tag*/PAGE_SPEED_TIME = [new Date().getTime()];</script><head>
......
</head>

復制代碼 代碼如下:

......
/* 頁面最末端,計算頁面加載耗用的時間 */
</body>
<script src="http://ossweb-img.qq.com/images/js/pagespeed/page_speed_v2.js"></script></html>


下面來分析一下page_speed_v2.js文件的內(nèi)容。對這個腳本進行重新格式化,以便更加方便閱讀。

復制代碼 代碼如下:

/* 執(zhí)行匿名函數(shù)構(gòu)建對象PageSpeed */
;(function() {
    PageSpeed = {};/* 這里沒有 var 關(guān)鍵字, 相當于引用的是 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標簽已經(jīng)存在 */
            c = document.getElementById(b)
        } else { /* 不存在, 創(chuàng)建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); /* 調(diào)用insertBefore方法, 將新創(chuàng)建的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; /* 返回創(chuàng)建成功的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數(shù)組的最后一個元素減去第一個元素 */
        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]
        }

  /* 提交速度測試結(jié)果的目的腳本 */
        var c = 'http://pagespeed-ied.qq.com/r.cgi';

  /* 遍歷 b 數(shù)組的元素, 構(gòu)建 query string */
        var d = [];
        for (var p in b) {
            d.push(p + '=' + b[p])
        }
        c += '?' + d.join('&');

  /* 創(chuàng)建script標簽提交測速結(jié)果 */
        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)) {
            return
        }

  /* 獲取新的時間戳 */
        PAGE_SPEED_TIME.push(new Date().getTime());

        b.PAGE_SPEED_TIME = PAGE_SPEED_TIME;

  /*
   * 沒看懂這里為啥需要一個新的變量 aaa, 直接使用 a 不可以么?
   * try ... catch 結(jié)構(gòu)中使用的卻是一個新的變量 aaaa 但后面卻從未使用, 為何? 是否應(yīng)該是 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);
        }

  /* 隨機概率提交數(shù)據(jù) */
        if (c <= b.rate * 1) {
            PageSpeed.submitDataForPageSpeed(b);
        }
    };

 /**
  * 綁定submit方法(用于CDN測速?)
  *
  * @param String a 名稱
  */
    PageSpeed.submit = function(a) {
        var b = PageSpeed.cdn_page_speed_submitData;
        var c = {};
        for (var p in b) {
            c[p] = b[p]
        }
        c.name = a || c.name;
        PageSpeed.submitDataForPageSpeed(c);
    }
})();

try {
    /* 1秒后嘗試提交數(shù)據(jù) */
    setTimeout(function() {
        PageSpeed.defaultSubmit()
    },
    1000);
} catch(e) {}

/* 最后這段注釋, 第二段是32位16進制數(shù)字, 應(yīng)該是類似于 ETag 用于標記內(nèi)容版本的 */
/*  |xGv00|ca82276cd78ac911d3d4310ba1408236 */

相關(guān)文章

  • uniapp項目使用防抖及節(jié)流的方案實戰(zhàn)

    uniapp項目使用防抖及節(jié)流的方案實戰(zhàn)

    防抖就是指觸發(fā)事件后把觸發(fā)非常頻繁的事件合并成一次去執(zhí)行,節(jié)流是指頻繁觸發(fā)事件時只會在指定的時間段內(nèi)執(zhí)行事件回調(diào),即觸發(fā)事件間隔大于等于指定的時間才會執(zhí)行回調(diào)函數(shù),這篇文章主要給大家介紹了關(guān)于uniapp項目使用防抖及節(jié)流的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Bootstrap與KnockoutJs相結(jié)合實現(xiàn)分頁效果實例詳解

    Bootstrap與KnockoutJs相結(jié)合實現(xiàn)分頁效果實例詳解

    KnockoutJS是一個JavaScript實現(xiàn)的MVVM框架。接下來通過本文給大家介紹Bootstrap與KnockoutJs相結(jié)合實現(xiàn)分頁效果,對bootstrap knockoutjs相關(guān)知識感興趣的朋友一起學習吧
    2016-05-05
  • JavaScript基礎(chǔ)知識之方法匯總結(jié)

    JavaScript基礎(chǔ)知識之方法匯總結(jié)

    本文給大家分享了javascript基礎(chǔ)知識,包括數(shù)組的方法,函數(shù)的方法,數(shù)字的方法,對象的方法,字符串的方法,常規(guī)方法,正則表達式方法,本文介紹的非常詳細,具有參考價值特此分享供大家參考
    2016-01-01
  • JS中如何將JSON數(shù)組轉(zhuǎn)化為url參數(shù)

    JS中如何將JSON數(shù)組轉(zhuǎn)化為url參數(shù)

    這篇文章主要介紹了JS中如何將JSON數(shù)組轉(zhuǎn)化為url參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 一個js的tab切換效果代碼[代碼分離]

    一個js的tab切換效果代碼[代碼分離]

    看了此文(YUI實現(xiàn)的Tab 切換),有感而發(fā),寫了一個tab切換的函數(shù),做學習之用。原生js實現(xiàn),因為框架不好玩。
    2010-04-04
  • 基于Bootstrap下拉框插件bootstrap-select使用方法詳解

    基于Bootstrap下拉框插件bootstrap-select使用方法詳解

    這篇文章主要為大家詳細介紹了基于Bootstrap下拉框插件bootstrap-select的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • uniapp開發(fā)微信小程序主包太大和vendor.js過大無法打包問題解決

    uniapp開發(fā)微信小程序主包太大和vendor.js過大無法打包問題解決

    最近工作一直在uniapp開發(fā)小程序這一塊,相信很多開發(fā)者都遇到過代碼體積太大無法打包的問題,這篇文章主要給大家介紹了關(guān)于uniapp開發(fā)微信小程序主包太大和vendor.js過大無法打包問題的解決辦法,需要的朋友可以參考下
    2023-11-11
  • javascript canvas檢測小球碰撞

    javascript canvas檢測小球碰撞

    這篇文章主要為大家詳細介紹了javascript canvas檢測小球碰撞,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • webpack是如何實現(xiàn)模塊化加載的方法

    webpack是如何實現(xiàn)模塊化加載的方法

    這篇文章主要介紹了webpack是如何實現(xiàn)模塊化加載的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • JavaScript選擇排序算法原理與實現(xiàn)方法示例

    JavaScript選擇排序算法原理與實現(xiàn)方法示例

    這篇文章主要介紹了JavaScript選擇排序算法原理與實現(xiàn)方法,簡單分析了選擇排序算法的概念、原理并結(jié)合實例形式分析了JavaScript選擇排序算法的相關(guān)實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2018-08-08

最新評論