2014-12-03 15 views
3

有没有一种方法可以在javascript中计算网站对服务器的http请求数量? 示例:在我使用apache tomcat运行的本地webserver中,我有一个带有style.css文件的简单html页面helloworld.html,因此当我输入“localhost:8080/helloworld.html”时,浏览器执行两个请求,一个用于helloworld。 html和style.css中的一个。在javascript中计算http请求的数量

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

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

+1

当然,要做到这一点的地方是服务器,它会记录所有请求 – 2014-12-03 15:19:07

+0

您是对的,但我想在我的html页面上显示此编号。 – david6630 2014-12-03 15:22:40

+1

即使在服务器上也很棘手,因为您需要将所有单个http请求与一个初始请求关联起来。如果你可以在服务器端做它,你可以将数据写入一个文件,然后通过ajax从客户端获取该文件。 – 2014-12-03 15:30:15

回答

-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++; 
    } 
}); 

这个假设正确使用相对URL。这不会给你任何状态(例如404)。请注意0​​在IE8上不能正常工作。

+0

我不明白你的答案与“OP”的问题有关,可能会更清楚吗?谢谢 – 2014-12-03 16:07:42

+0

他希望统计页面对服务器的请求数量。在一个简单的页面中,这是1 +带有相对src的'script'的数量+带有相对href的'link'的数量。 – Gnucki 2014-12-03 16:15:58

+0

OP需要“javascript”(我的意思是使用Chrome开发工具)的解决方案,因此您的答案不是OP需要的。如果您有任何关于OP如何做的想法,请编辑您的答案。 – 2014-12-03 16:31:44

2

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

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

有类似发现像图片,CSS,脚本等个别细节不容易的选择,但还是可以找到那些你的所有资源的URL是像http://example.com/img/sample.jpghttp://example.com/scripts/app.jshttp://example.com/styles/master.css

一些适当的格式
_.filter(window.performance.getEntriesByType("resource"),function(a){ return a.name.indexOf("/img/") > 0 }); 

注意:使用_进行过滤。你可以使用没有_。这种方法也有它自己的警告,它只会返回成功的请求。待处理的资源将不会被列出

+0

不能得到这个工作:( – 2015-10-10 04:47:00

+0

也难受这个,你能举个例子吗? – samuelkobe 2015-10-10 05:12:17