2009-03-20 6 views
11

내 웹 응용 프로그램의 실제 평균 페이지로드 시간을 알고 싶습니다.실제 (웹) 페이지로드 시간을 계산하는 신뢰할 수있는 방법

내 방문자가 내 사이트의 페이지를 사용하기 시작하기 전에 평균 방문자가 로그를 기록하는 방식을 간단히 설명합니다. 사이트가 끝날 때까지 내 사이트 링크를 클릭하면부터 & 입력을 받아 들일 준비가되었습니다.

표준 해결책은 Javascript를 사용하여 스크립트의 시간을 window.onload() 이벤트의 스크립트까지 비교하는 것입니다.

는 (참조 : http://www.dreamincode.net/code/snippet1908.htm를)

내 도메인 &를 해결하는 데 걸리는 시간을 무시로 이것은 나에게 매우 acturate 측정은 아닌 것 같아 자바 스크립트 parsig을 시작하기에 충분히 HTML 콘텐츠를받을 수 있습니다.

페이지로드가 실제로 완료되기 전에 Safari가 window.onload를 실행하는 것처럼 보입니다 (http://www.howtocreate.co.uk/safaribenchmarks.html).

아이디어가 있으십니까?

Javascript를 통해 현재 요청이 시작된 시간을 가져올 수 있습니까?
모든 브라우저에서 모든 것이 안정적으로 준비되면 어떤 이벤트가 발생합니까?

+0

DNS 확인 시간이 당신의 통제 밖에있는 무언가이다

• 나누기,가 안정적으로 측정 할 방법이 없습니다. –

답변

7

http://www.webpagetest.org/는 또한 chorme 개발 도구 구글로드 시간

을 측정하기위한 훌륭한 자원하는 이벤트를 기록 할 수 있습니다 [타임 라인] 패널을 가지고, 여기 구글 크롬의 타임 라인 http://www.youtube.com/watch?v=RhaWYQ44WEc

를 작동하는 방법을 보여주는 2.5minute 비디오입니다
+2

위의 API를 사용할 수 있습니까? 웹 사이트의 신뢰할 수있는로드 시간을 계산하는 데 사용할 수있는 다른 API가 있습니까? – SilentAssassin

+0

내가 알지 못하는 것은 훌륭한 API가 될 것입니다! – Grundizer

+0

이유는 두 도구가 많은 페이지에서 매우 다른 로딩 시간을 제공하는지 모르겠습니다. –

0

로드 시간을 계산하는 가장 정확한 방법은 서버 측에 : 페이지가 구축되면,이에 따라 달라집니다 사용자의 브라우저에 표시하는 데 걸리는 얼마나 많은 :

  • 현재 네트워크 트래픽;
  • 사용자 컴퓨터 사양;
  • 그가 사용중인 브라우저.

그래서 자바 스크립트를 사용하는 것은 좋은 방법이 아닙니다. 거기에서 변경할 수없는 요소가 많기 때문입니다.

당신이 할 수있는 최선의 방법은 각 페이지가 서버에서 생성되는 데 걸리는 시간을 측정하는 것입니다. 은 사용자가 개선 할 수있는입니다.

, 그건 당신이 코딩중인 언어에 따라 달라집니다.

수행 할 수 있습니다
+1

실제로 클라이언트 측 렌더링 시간을 향상시키기 위해 할 수있는 일이 많이 있습니다. 더 작거나 더 작은 이미지 포함, js 렌더링 시간 개선, CDN 등에 물건 넣기 등. 하지만 동의합니다. 지연이있는 곳을 분석하면 매우 유용 할 것입니다. –

+0

허가 됨; 네가 옳아. JS도 조정할 수 있습니다. 그것은 단지 귀하의 질문에 서버 쪽을 가져갔습니다 :) – Seb

0

한 가지 클라이언트 측 이벤트가 게시물을 트리거 발생하면 현재 시간을 잡기 위해 자바 스크립트를 사용하는 것입니다 말할 필요도없이 다시 서버로. 이 값을 다시 서버 측에 전달하면 비교할 수있는 초기 '트리거'시간으로 클라이언트에 다시 렌더링 할 수 있습니다.

대신 onLoad를 사용하여 문서의 끝에 인라인 스크립트를 넣을 수 있으므로 브라우저가 스크립트의 해당 부분을 렌더링하자 마자 실행됩니다. 이렇게하면 사용자가 호출을 시작했을 때 캡처 된 트리거 시간에 대해 인라인 스크립트가 실행될 때의 현재 시간을 비교할 수 있습니다.

그러나 Seb에서 언급했듯이 서버 측에서만로드 시간을 안정적으로 제어 할 수 있으므로 메트릭에 서버 페이지 생성 시간을 포함하는 것이 가장 좋습니다. 두 측정 항목이 모두있는 경우 페이지 생성에 소요 된 총 시간의 양과 클라이언트 측에서 발생할 수있는 다양한 지연에 따라 달라질 수 있습니다.

+0

클라이언트 측 시간에 의존 할 수 없습니다. 그것은 1969 년 1 월 8:00 AM으로 설정 될 수 있습니다. –

+0

클라이언트 측 시간은 중요하지 않습니다.서버가이 서버를 사용하지 않으면 서버에 다시 전달하여 응답에 포함 할 수 있습니다. 모든 계산은 클라이언트 측에서 수행되므로 클라이언트의 시간 설정은 이전과 이후 모두에 사용됩니다. –

0

나는 항상 Pingdom Tools full page test 매우 유용하다고 발견했습니다. 코드 내 솔루션은 아니지만 페이지로드 속도에 대한 좋은 아이디어를 제공합니다.

3

FireBug에는 웹 페이지를 구성하는 각 리소스를 다운로드하는 데 걸리는 시간을 볼 수있는 "네트워크 타이밍 모드"가 있습니다.

게다가 서버가 요청을 준비하는 데 필요한 시간을 측정해야합니다. 브라우저와 네트워크에는 영향을 미치지 않으므로 서버 렌더링 시간은 가능한 한 짧아야합니다.

3

방화 광은 페이지 로딩에 대한 기타 많은 정보를 제공하는 훌륭한 리소스입니다. 또한 YSlow가있는 Firebug는 한 걸음 더 나아갑니다. YSlow는 귀하의 페이지에 대해 실행되고 특정 규칙 (CDN을 사용하고 있습니까, 귀하의 CSS와 JS가 압축되어 있는지 등)에 따라 실적이 떨어지는 수많은 수표가 있습니다. 나는 내 사이트에서 몇 가지 중요한 개선 사항 (JS 압축은 훌륭한 것)을 만드는 것이 매우 중요하다는 것을 알았다.

+1

동의합니다. 방화범은 유용한 도구입니다. 그러나 MY PC/브라우저/네트워크의로드 시간 만 측정합니다. 내 사이트의 실제 사용자 (PC 속도, 네트워크 위치, 브라우저 유형 등의 이상하고 멋진 조합 등)가있는 평균 시간이 아님 –

0

가짜 코드.


server marks start of processing the request. 
server sends the output. 
    script tag, marks start time. 
    rest of html markup. 
    client script , with server processing time in ms 
    client script with window.load event + server-side time 
    client script which sends the total back via an ajax call. 
1

는 질문의 게시물을 응답 할 것이다, 야후의 YSlow를 시도하지만 (실제로 불을 지르고 대한 플러그인) 파이어 폭스

0

내가 사용하는 방법은 세션 변수를 만드는 것입니다에서만 작동 (포장 if가 index.php 파일의 첫 번째 것으로 설정되어 있지 않은지 확인합니다 (모든 스크립트가 실행 됨). 그런 다음 세션의 유효 시간을 가져 와서 현재 시간에서 뺍니다 서버의 다른 스크립트에 다시 게시하는 javaScript의 pageLoad 이벤트가 있습니다. 이렇게하면 요청이 서버에 충돌하고 처리하고 응답하고 렌더링하는 데 걸리는 시간이 달라집니다.

다시 게시하는 스크립트에서 세션 변수를 설정 해제 했으므로 다음에 페이지를로드 할 때 새 세션 변수가 설정되도록 설정하십시오 (설정을 해제했기 때문에 존재하지 않음). 다시 시작됩니다. . 아약스가 서버를 요청하고 빼는 데 걸린 시간을 알아내는 것만 가능하지만 밀리 초가되어야합니다.

+0

YUI와 onDomReady 메소드를 사용합니다. 페이지가 완전히로드되고 DOM이 준비되었습니다 .-) – Alex

관련 문제