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工具时我才能使用它。
答案 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上运行。