Các hướng dẫn truyền thống của Google về cách ga.js
sử dụng document.write()
. Vì vậy, ngay cả khi một trình duyệt nào đó sẽ tải không đồng bộ các thư viện JavaScript bên ngoài cho đến khi một số mã thực sự được thực thi, document.write()
thì trình duyệt vẫn sẽ chặn tải trang. Các hướng dẫn không đồng bộ sau này không sử dụng document.write()
trực tiếp nhưng có thể insertBefore
cũng chặn tải trang?
Tuy nhiên, Google đặt bộ nhớ cache max-age
thành 86.400 giây (là 1 ngày và thậm chí đặt ở chế độ công khai , vì vậy cũng có thể áp dụng cho proxy). Vì vậy, khi nhiều trang web tải cùng một tập lệnh Google, thì JavaScript thường sẽ được tìm nạp từ bộ nhớ cache. Tuy nhiên, ngay cả khi ga.js
được lưu vào bộ nhớ cache, chỉ cần nhấp vào nút tải lại thường sẽ khiến trình duyệt hỏi Google về bất kỳ thay đổi nào . Và sau đó, giống như khi ga.js
chưa được lưu vào bộ nhớ cache, trình duyệt phải chờ phản hồi trước khi tiếp tục:
NHẬN /ga.js HTTP / 1.1
Máy chủ: www.google-analytics.com
...
Nếu-Sửa đổi-Kể từ: Thứ Hai, ngày 22 tháng 6 năm 2009 20:00:33 GMT
Kiểm soát bộ nhớ cache: max-age = 0
HTTP / 1.x 304 Không được sửa đổi
Sửa lần cuối: Thứ Hai, ngày 22 tháng 6 năm 2009 20:00:33 GMT
Ngày: Chủ nhật, ngày 26 tháng 7 năm 2009 12:08:27 GMT
Cache-Control: max-age = 604800, public
Máy chủ: Golfe
Lưu ý rằng nhiều người dùng nhấp vào tải lại các trang web tin tức, diễn đàn và blog mà họ đã mở trong cửa sổ trình duyệt, khiến nhiều trình duyệt bị chặn cho đến khi nhận được phản hồi từ Google . Bạn tải lại trang chủ SO thường xuyên như thế nào? Khi phản hồi của Google Analytics chậm, thì những người dùng như vậy sẽ nhận ra ngay. (Có nhiều giải pháp được xuất bản trên mạng để tải ga.js
tập lệnh không đồng bộ , đặc biệt hữu ích cho những loại trang web này, nhưng có thể không còn tốt hơn hướng dẫn cập nhật của Google).
Sau khi JavaScript đã tải và thực thi, quá trình tải thực tế của lỗi web (hình ảnh theo dõi) sẽ không đồng bộ. Vì vậy, việc tải hình ảnh theo dõi không được chặn bất kỳ thứ gì khác, trừ khi trang sử dụngbody.onload()
. Trong trường hợp này, nếu lỗi web không tải kịp thời thì việc nhấp vào tải lại thực sự làm cho mọi thứ tồi tệ hơn vì nhấp vào tải lại cũng sẽ khiến trình duyệt yêu cầu lại tập lệnh, như If-Modified-Since
mô tả ở trên. Trước khi tải lại, trình duyệt chỉ đang chờ lỗi web, trong khi sau khi nhấp vào tải lại, trình duyệt cũng cần phản hồi cho ga.js
tập lệnh.
Vì vậy, các trang web sử dụng Google Analytics không nên sử dụngbody.onload()
. Thay vào đó, người ta nên sử dụng một cái gì đó như sự kiện $ (document) .ready () của jQuery hoặc sự kiện domready của MooTools .
Xem thêm Tổng quan về chức năng của Google , giải thích Cách Google Analytics thu thập dữ liệu? , bao gồm cả Cách hoạt động của Mã theo dõi . (Điều này cũng khiến Google chính thức thu thập nội dung của cookie của bên thứ nhất. Đó là: cookie từ trang web bạn đang truy cập.)
Cập nhật: vào tháng 12 năm 2009 , Google đã phát hành phiên bản không đồng bộ . Ở trên nên nói với mọi người rằng hãy nâng cấp cho chắc chắn, mặc dù nâng cấp không giải quyết được mọi thứ .