2011-06-30 4 views
7

javascriptを使用して、プラグインに頼らずにhttpリクエストで最初のバイト(TTFB)および/または最後のバイト(TTLB)までの時間を公開する最新のブラウザはありますか?最初のバイトまでの時間はjavascriptでですか?

私が望むのは、これらの値にアクセスし、パフォーマンス監視のためにサーバーに戻すことができるjavascriptスニペットです。

説明: jsタイマーや開発者ツールを探していません。私が思っているのは、ロード時間を測定し、その値をJavaScriptで公開するブラウザがある場合です。

+0

JavaScriptを使用してページを読み込む時間を測定することはできますか? –

+0

はい。可能であれば、ブラウザがデータの受信を開始するまで、および/またはこのデータがすべて受信されるまで、ブラウザがリクエストを送信するまでにかかる時間が必要です。 Safari/Chromeデベロッパーツール、Firebugなどで入手できるデータは、デベロッパーツールにまったく依存しません。 –

答えて

11

あなたが望むのは、W3CのPerformanceTimingインターフェイスです。ブラウザのサポートは良いです(2011年9月のthis surveyを参照)。あなたがShadow Wizardの答えに応じて推測したように、これらの時間はブラウザによってキャプチャされ、ウィンドウオブジェクトのjavascriptに公開されます。それらはwindow.performance.timingにあります。 TTFB間隔のエンドポイントは、window.performance.timing.responseStart(「ユーザーエージェントがサーバーからの応答の最初のバイトを受信した直後、または関連アプリケーションキャッシュまたはローカルリソースから受信した直後の時間」と定義されます)。前のドキュメントをアンロードする時間に興味があるか、DNSを解決する時間に関わらず、出発点にはいくつかのオプションがあります。そのため、ドキュメントを読んで、アプリケーションに適したドキュメントを選択することをお勧めします。

+1

var performanceTiming = performance.timing; ttfb = performanceTiming.responseStart - performanceTiming.requestStart; これはIE 7以降でサポートされています – Beakal

0

Chromeデベロッパーツールで応答時間を確認できます。

+1

彼は「プラグインに頼らずに」明示的に尋ねました。彼はFirebugなども意味すると思います。 –

+0

ChromeのDevelopertoolsはプラグインではありません... –

+0

Trueですが、Firebugがあります。記録のために、-1は私のものではありません - これは悪い答えではなく、私が指摘した "欠陥"を持っています。 :)あなたがそれを投稿した後、あなたは何年前からこの答えを思い出したのですか? –

0

JSで真のTTFBを取得することは不可能です。最初のバイトが受信された後で初めてページがJSコンテキストを取得するためです。非常に早いあなた<head>タグで

<script type="text/javascript">var startTime = (new Date()).getTime()</script> 

:あなたが得ることができる最も近いには、以下のようなものです。その後、htmlが終了したかどうかを確認するか、すべてがダウンロードを終了するかによって、htmlページの一番下に類似のタグを置き(値を減算する)、XHRをサーバーに戻すことができます次のページリクエストでサーバー側を取得できるCookieを設定する)、またはonloadイベントを聞き取り、同じ操作を行います。

+2

しかし、TTFBはリクエストが送信されたときから測定されます。定義により、javascriptが後のバイトに含まれるため、TTFBは経過しています。 – detaylor

+0

これとJavaScriptの時間測定は、http:// ejohnです。org/blog/accuracy-of-javascript-time/ – danjah

+0

@Smirkin yepですが、これはJavascriptを使って取得するのに最も近いものです。これをより明確にするために編集しました。 –

1

私は恐らくそれができないことを恐れる。

JavaScriptが有効になるのはの後にリクエストがサーバーから送信され、ブラウザで受け付けられ、解析されます。

「あなたはそれを食べた後にケーキの重量を測定できますか? - あなたは最初に体重をかけ、ケーキだけを食べる必要があります。

+1

あなたの返事をありがとう。私はちょうどそのように「ブラウザが私のために測定したものにjavascriptでアクセスできますか?明らかに、私は後の統計を収集するブラウザに何かが必要です。 JSの部分は、すでに収集されたこれらの値を単に公開するだけです。 –

+0

おそらく、最後にアクセスされたサーバーの時刻が利用可能なものであれば、HTMLヘッダーにロードされたファイルに対してioファイルの取得を行うことは可能でしょうか?それはあなたに開始時間を教えてくれるでしょう。それがロードされた時間は、最後のバイトが読み取られた時ではないので、終わりの時間はとにかくさらに困難になります...ちょっと考えました。 – danjah

+0

@NAいいえ、ブラウザがそのようなことを集める理由は何も見えませんか?オープンソースブラウザでは、そのようなことを公開する可能性がありますが、JSに公開するのではなく、そのような統計を保存する最新のブラウザがあることは非常に疑問です。とにかく、ブラウザに関連するものはすべて 'navigator'オブジェクトの一部です。 –

関連する問題