计算javascript中的http请求数

时间:2014-12-03 15:15:11

标签: javascript tomcat httprequest google-chrome-devtools

javascript中有没有办法计算网站对服务器的http请求数? 示例:在使用apache tomcat运行的本地Web服务器中,我有一个带有style.css文件的简单html页面helloworld.html,所以当我输入" localhost:8080 / helloworld.html"浏览器执行两个请求,一个用于helloworld.html,另一个用于style.css。

我的目标是在helloworld.html上显示一个视频元素的这个数字,当我播放它时,启动几个http到网络服务器。

我在网上尝试了几天,但我没有找到任何东西。我找到了webrequest api,但我认为只有chrome扩展可以使用它。我还找到了chrome.devtools.network API,但只有在打开chrome dev工具时我才能使用它。

2 个答案:

答案 0 :(得分:2)

使用HTML5提供的window.performance API,可以轻松找到页面加载的外部资源总数。

var totalNoOfResrouces = window.performance.getEntriesByType("resource").length;

没有简单的选择,例如查找图像,CSS,脚本等个别详细信息,但如果您的所有资源网址都采用适当的格式,例如http://example.com/img/sample.jpg或{{3},您仍然可以找到这些选项。 }或http://example.com/scripts/app.js

_.filter(window.performance.getEntriesByType("resource"),function(a){ return a.name.indexOf("/img/") > 0 });

注意:使用_进行过滤。你可以不用_。这种方法也有自己的注意事项,它只返回成功的请求。未列出的资源不会列出

答案 1 :(得分:-1)

您可以手动统计<link><script>(对于没有ajax的简单页面)。

使用JQuery:

var requestsNumber = 1; // The document itself.

$('link').each(function() {
    var href = $(this).attr('href');

    if (href && -1 === href.indexOf('http://')) {
        requestNumber++;
    }
});

$('script').each(function() {
    var src = $(this).attr('src');

    if (src && -1 === src.indexOf('http://')) {
        requestNumber++;
    }
});

这假设您正确使用相对网址。这不会给你任何响应状态(比如404)。请注意,indexOf无法在IE8上运行。