_gaq.push (['_ trackPageLoadTime']) ทำงานอย่างไร


102

คุณลักษณะความเร็วไซต์ของ Google Analytics _gaq.push(['_trackPageLoadTime'])ทำงานอย่างไร มีเอกสารเกี่ยวกับวิธีการทำงานหรือไม่?


2
@ stuken.yuri ซึ่งเป็นไวยากรณ์สำหรับการเรียก Google Analytics Asynchronous โดยทั่วไปหมายถึง: เพิ่มฟังก์ชัน (ชื่อ) _trackPageLoadTimeลงในคิวจากนั้นจึงเริ่มการทำงานของฟังก์ชันทั้งหมดในคิวนั้นตามลำดับเมื่อโหลด ga.js แล้ว ช่วยให้คุณโหลดga.jsแบบอะซิงโครนัสได้อย่างปลอดภัย
Yahel

คำตอบ:


181

แก้ไข : ณ วันที่ 16 พฤศจิกายน 2011, ฟังก์ชั่นได้รับการคัดค้านและการทำงานที่ได้รับการตั้งค่าเป็นค่าเริ่มต้น (ตามหน้าที่แล้วมันได้เปลี่ยนไปจากการเป็นคุณลักษณะการเลือกเข้าร่วมเป็นคุณลักษณะการเลือกไม่ใช้)_trackPageLoadTime

_setSiteSpeedSampleRateเป็นฟังก์ชันใหม่สำหรับกำหนดอัตราการสุ่มตัวอย่างของคุณลักษณะนี้ ค่าเริ่มต้นคือ1(เท่ากับ 1%) หากต้องการยกเลิกการใช้คุณลักษณะความเร็วไซต์คุณต้องส่งผ่าน0ไปยังฟังก์ชันนี้:

_gaq.push(["_setSiteSpeedSampleRate", 0]);

จากศูนย์ช่วยเหลือของ Google Analytics :

ปัจจุบันรายงานนี้สนับสนุนเบราว์เซอร์ต่อไปนี้: Chrome, Internet Explorer 9 และ Internet Explorer เวอร์ชันก่อนหน้าพร้อมกับติดตั้ง Google Toolbar โดยเฉพาะอย่างยิ่งรายงานความเร็วไซต์ต้องการเบราว์เซอร์ที่รองรับอินเทอร์เฟซ HTML5 NavigationTiming หรือติดตั้งแถบเครื่องมือ Google Internet Explorer

ดังนั้นจึงไม่ได้ใช้ตัวจับเวลาของตัวเองเช่นเดียวกับโซลูชันโฮมแบ็คก่อนหน้านี้เพื่อหาระยะเวลาในการโหลดหน้าเว็บ แต่จะใช้คุณลักษณะ HTML5 ใหม่ซึ่งปัจจุบันได้รับการสนับสนุนเฉพาะในกรณีข้างต้นที่เรียกว่า NavigationTiming

แก้ไข : ตอนนี้รองรับในFirefox 7 แล้ว

(สิ่งสำคัญโปรดทราบว่าจะไม่ทำงานในทุกการโหลด แต่ในปัจจุบันจะสุ่มตัวอย่างประมาณ 2% ของการดูหน้าเว็บแม้ว่าจะมีการกำหนดค่าให้พยายามติดตามการโหลดหน้าเว็บทั้งหมดใน 10% ของการเข้าชมเนื่องจากเบราว์เซอร์จำนวนมากขึ้นรองรับ NavigationTiming API คุณสามารถคาดหวังว่าเปอร์เซ็นต์ตัวอย่างทั้งหมดจะเริ่มเข้าใกล้ 10% มากขึ้น)

อินเทอร์เฟซนี้เข้าถึงได้ภายใต้ออบเจ็กต์ DOM window.performance(หรือใน Chrome เวอร์ชันก่อนหน้าwindow.webkitPerformance) โดยใช้timingแอตทริบิวต์ (ดังนั้นwindow.performance.timing) ออบเจ็กต์จะเก็บค่าที่วัดได้ของเวลาเหตุการณ์การโหลดหน้าหลักทั้งหมดและ Google Analytics จะลบค่าภายนอกที่สำคัญกว่า 2 ค่าออกเพื่อตัดสินความเร็วในการโหลดหน้าเว็บ

สำหรับการโหลด Mashable.com โดยไม่ใช้แคชนี่คือตัวอย่างของสิ่งที่วัดได้ (ใน Chrome 11):

timing = {
  connectEnd: 1306677079337,
  connectStart: 1306677079337,
  domComplete: 1306677083482,
  domContentLoadedEventEnd: 1306677081765,
  domContentLoadedEventStart: 1306677081576,
  domInteractive: 1306677081576,
  domLoading: 1306677079478,
  domainLookupEnd: 1306677079337,
  domainLookupStart: 1306677079337,
  fetchStart: 1306677079337,
  loadEventEnd: 1306677083483,
  loadEventStart: 1306677083482,
  navigationStart: 1306677079337,
  redirectEnd: 0,
  redirectStart: 0,
  requestStart: 1306677079394,
  responseEnd: 1306677079669,
  responseStart: 1306677079476,
  secureConnectionStart: 0,
  unloadEventEnd: 0,
  unloadEventStart: 0
}

ตัวเลขเหล่านี้เป็นมิลลิวินาทีหรือมิลลิวินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 ฉันไม่เห็นเอกสารใด ๆ ว่าค่าใดที่ลบออกเพื่อสร้างค่าของมัน แต่จากการตรวจสอบคร่าวๆของga.jsดูเหมือนว่าจะเป็นloadEventStart-fetchStart:

h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);

สำหรับตัวอย่างข้างต้นนั่นหมายความว่าจะบันทึก4.14 วินาทีในการ_trackPageLoadTimeโทร

จากข้อมูลจำเพาะของ W3C Navigation Timing:

แอตทริบิวต์ fetchStart

หากต้องการดึงทรัพยากรใหม่โดยใช้ HTTP GET หรือเทียบเท่า fetchStart ต้องส่งคืนเวลาทันทีก่อนที่ตัวแทนผู้ใช้จะเริ่มตรวจสอบแคชของแอปพลิเคชันที่เกี่ยวข้อง มิฉะนั้นจะต้องส่งคืนเวลาที่ตัวแทนผู้ใช้เริ่มดึงทรัพยากร

loadEventStart แอตทริบิวต์

แอตทริบิวต์นี้ต้องส่งคืนเวลาทันทีก่อนที่เหตุการณ์การโหลดของเอกสารปัจจุบันจะเริ่มทำงาน จะต้องคืนค่าศูนย์เมื่อเหตุการณ์โหลดยังไม่เริ่มทำงาน

สำหรับบุคคลที่อยากรู้อยากเห็นการสั่งซื้อจะเป็นดังนี้:

connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, domInteractive, domContentLoadedEventEnd, dompleteCom, loadEventStart, loadEventEnd

สำหรับค่า 0 ที่แสดง:

unloadEventStartและunloadEventStartแสดงเวลาสำหรับการยกเลิกการโหลดของการโหลดหน้าก่อนหน้า (แต่เฉพาะในกรณีที่หน้านั้นมีต้นกำเนิดเดียวกันกับหน้าปัจจุบัน)

redirectEndและredirectStartวัดค่าเวลาในการตอบสนองที่เพิ่มหากมีการเปลี่ยนเส้นทาง HTTP ในห่วงโซ่การโหลดหน้า

secureConnectionStart ดูเหมือนจะเป็นการวัดทางเลือกสำหรับการวัดเวลาการเชื่อมต่อ SSL


6
คุณร็อคเพื่อนอย่างจริงจัง ขอบคุณสำหรับการตอบกลับอย่างละเอียด
Sid

secureConnectionStartเป็นการวัดมาตรฐาน แต่เป็นทางเลือกสำหรับเบราว์เซอร์ (หรืออะไรก็ตามที่จัดการกับเนื้อหา) ในการรายงาน w3c-test.org/webperf/specs/NavigationTiming/…
Eric
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.