您好,欢迎访问一九零五行业门户网

javascript页面渲染速度测试脚本分享_javascript技巧

复制代码 代码如下:
/* 获取渲染开始的时间戳, 保存在数组page_speed_time中 */
......
复制代码 代码如下:
......
/* 页面最末端,计算页面加载耗用的时间 */
下面来分析一下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             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)) {
            return
        }
  /* 获取新的时间戳 */
        page_speed_time.push(new date().gettime());
        b.page_speed_time = page_speed_time;
  /*
   * 没看懂这里为啥需要一个新的变量 aaa, 直接使用 a 不可以么?
   * try ... catch 结构中使用的却是一个新的变量 aaaa 但后面却从未使用, 为何? 是否应该是 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);
        }
    };
 /**
  * 绑定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秒后尝试提交数据 */
    settimeout(function() {
        pagespeed.defaultsubmit()
    },
    1000);
} catch(e) {}
/* 最后这段注释, 第二段是32位16进制数字, 应该是类似于 etag 用于标记内容版本的 */
/*  |xgv00|ca82276cd78ac911d3d4310ba1408236 */
其它类似信息

推荐信息