私は新しい performance.timing JavaScript API で遊んでいて、かなり感銘を受けました。
ここに良い説明があります http://www.html5rocks.com/en/tutorials/webperformance/basics/
これには、世界中のテスターがダブルクリックして、世界中のさまざまな場所から私たちのサイトのたとえば 20 個の URL のパフォーマンスを取得できる単純なページを作成する必要があるという重要な使用例があります。
私たちのサイトは HTML5 ではないので、このようなものをページに直接埋め込むことはできません (1 か月に 10 億ページあるので、それほど多くのデータは必要ありません)。したがって、私の基本的な計画は、iframe に 20 個の URL をロードするスクリプトを含む単純な「ラッパー」HTML ページです。ええ、私は知っています!iframe は最悪ですが、これはきれいである必要はなく、単に効果的です!
Javascript は私の得意分野ではありません。したがって、独立した iframe ごとにこのデータを取得する方法について助けが必要です (もちろん、実証済みの方法がある場合は、他の方法論を聞くことに興味があります)。
それがどのように機能するかを非常に簡単に説明するために(これまでのところChromeとIE9のみだと思います)
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Performance Test</title>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
var perf = performance.timing;
// Date / Time the page was requested
var navStart = perf.navigationStart;
// Redirection
var redStart = perf.redirectStart - navStart;
var redEnd = perf.redirectEnd - navStart;
// DNS Lookup
var dnsStart = perf.domainLookupStart - navStart;
var dnsEnd = perf.domainLookupEnd - navStart;
// TCP Connection
var tcpStart = perf.connectStart - navStart;
var tcpEnd = perf.connectEnd - navStart;
// Loading the response
var reqStart = perf.requestStart - navStart;
var loadStart = perf.responseStart - navStart;
var loadEnd = perf.loadEventStart - navStart;
// document.writeln("navStart = " + navStart);
// document.writeln("Redirect = " + redStart + "-" + redEnd);
document.write("DNS LOOKUP = " + dnsStart + "-" + dnsEnd + "ms<br>");
document.write("EST TCP CON = " + tcpStart + "-" + tcpEnd + "ms<br>");
document.write("LOADING RESPONSE = " + reqStart + "-" + loadStart + "ms<br>");
</script>
</body>
</html>
編集:
@ Mawi12345 のアイデアを使用して、次のことを試みています。
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Performance Test</title>
<style type="text/css">
</style>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function(){
var iFrame = $( '<iframe></iframe>' )
.attr( 'src', 'http://www.ikea.com')
.appendTo( $( 'body' ) );
console.log(iFrame[0].contentWindow.performance.timing);
});
$(function(){
var iFrame = $( '<iframe></iframe>' )
.attr( 'src', 'http://www.bbc.co.uk')
.appendTo( $( 'body' ) );
console.log(iFrame[0].contentWindow.performance.timing);
});
</script>
</body>
</html>