2012-05-15 26 views
6
<!—Firefox Prefetching --> 
<link rel="prefetch" href="http://www.example.com/page2.html"> 

<!—Chrome Prefetching --> 
<link rel="prerender" href="http://www.example.com/page2.html"> 

Nếu tôi đã có Javascript trên trang để hiển thị trước/tìm nạp trước (chẳng hạn như Google Analytics JS), trình đơn trước/prefetch có thực thi Javascript trên trang không? Hay nó trì hoãn việc thực thi JS cho đến khi trang thực sự được yêu cầu bởi người dùng?Rel PreRender/PreFetch, nó có thực thi JS không?

+0

Chỉ cần thực hiện một số nghiên cứu khác và tự trả lời câu hỏi, và thật thú vị khi lưu ý rằng tìm nạp trước và tiền xử lý hoạt động hoàn toàn khác nhau. –

Trả lời

7

Tôi vừa mới thực hiện một số nghiên cứu thêm về vấn đề này:

Prefetch sẽ được tải các tài nguyên cấp cao nhất thường chỉ đơn giản là trang HTML

Prerender sẽ lấy phần tử con là tốt, và sẽ thực thi mã Javascript . Sử dụng API hiển thị trang, chúng tôi có thể xác định trạng thái hiển thị hiện tại của trang được tải.

Vì vậy, câu trả lời là có, nó sẽ thực thi JS miễn là người dùng trên Chrome và đầu ra đang được sử dụng. Ngoài ra, phiên bản hiện tại của Google Analytics tận dụng toàn bộ API hiển thị trang để thống kê không bị lệch, tuy nhiên có khả năng có nhiều mã trong tự nhiên có số liệu thống kê bị sai lệch do không xử lý đúng trường hợp hiển thị trước.

+0

Thực ra, chúng là các lệnh khác nhau có mục đích. 'prefetch' có thể được sử dụng trên tài nguyên bạn muốn tìm nạp trước (tập lệnh, hình ảnh, tệp html, bất kỳ điều gì), trong khi' prerender' là để hiển thị trước một trang hoàn chỉnh mà bạn (hy vọng) biết có khả năng được truy cập cao tiếp theo, và rất sớm, bởi người dùng của bạn. Có thể là ví dụ trang đăng nhập cho diễn đàn của bạn, hoặc một cái gì đó tương tự. 'prefetch' được hỗ trợ bởi chrome, ff, ie và edge. 'prerender' được hỗ trợ bởi chrome, ie và edge. (mặc dù kiểm tra caniuse.com để cập nhật hỗ trợ ...) – Svish

+0

Bạn có nguồn chính thức từ Google cho biết Google Analytics biết cách bỏ qua các lần truy cập tìm nạp trước không? – Flimm

1

Không, chỉ tìm nạp trước tệp bộ nhớ cache, nó không thực thi javascript chứa.

Như tôi biết analytics.js không phân tích trang web khi bạn yêu cầu. Nó hoạt động khi nó được thực thi javascript. Khi trình duyệt tìm nạp trước (yêu cầu) tệp analytics.js không có nghĩa là tệp analytics.js được thi hành. Vì vậy, Dữ liệu Google Analytics của trang web của bạn sẽ không bị ảnh hưởng bởi phương pháp tìm nạp trước cho đến khi trang thực sự được người dùng yêu cầu.

1

Về vấn đề the spec là câm và chỉ đơn giản nói:

Từ khóa prefetch chỉ ra rằng preemptively lấy và bộ nhớ đệm tài nguyên quy định có khả năng là có lợi, vì nó rất khả năng mà người sử dụng sẽ yêu cầu tài nguyên này.

Từ điều này chúng tôi có thể nói rằng việc thực hiện JS trong các trang được tìm nạp trước là không xác định.

Cho dù nhà cung cấp trình duyệt có thấy lợi ích khi thực thi JS trong các trang đã tìm nạp trước đó không.

+0

Tôi vừa phát hiện ra prefetch chỉ tải phần tử cấp cao nhất, trước tiên sẽ lấy tất cả các phần tử con và sẽ thực thi JS. –

Các vấn đề liên quan