Ngữ cảnh: Câu hỏi của tôi liên quan đến việc cải thiện hiệu suất tải trang web và đặc biệt hiệu ứng mà javascript có khi tải trang (tài nguyên/phần tử bên dưới tập lệnh bị chặn tải xuống/hiển thị).Tải xuống javascript mà không bị chặn
Sự cố này thường tránh được/giảm nhẹ bằng cách đặt tập lệnh ở dưới cùng (ví dụ: ngay trước thẻ).
Mã tôi đang xem là dành cho phân tích trang web. Đặt nó ở phía dưới làm giảm độ chính xác của nó; và bởi vì tập lệnh này không ảnh hưởng đến nội dung của trang, tức là nó không viết lại bất kỳ phần nào của trang - tôi muốn di chuyển nó trong đầu. Chỉ cần làm thế nào để làm điều đó mà không làm hỏng hiệu suất tải trang là mấu chốt.
Từ nghiên cứu của tôi, tôi đã tìm thấy sáu kỹ thuật (w/sự ủng hộ của tất cả hoặc hầu hết các trình duyệt chính) để tải về các kịch bản để họ không chặn nội dung xuống trang từ tải/rendering:
(i) XHR + eval();
(ii) XHR + inject;
(iii) tải xuống tập lệnh được bao bọc HTML như trong iFrame;
(iv) đặt thẻ script cờ async thành TRUE (chỉ HTML 5);
(v) đặt thuộc tính trì hoãn thuộc tính của thẻ tập lệnh; và
(vi) 'Phần tử DOM tập lệnh'.
Đó là điều cuối cùng tôi không hiểu. JavaScript để triển khai mẫu (vi) là:
(function() {
var q1 = document.createElement('script');
q1.src = 'http://www.my_site.com/q1.js'
document.documentElement.firstChild.appendChild(q1)
})();
Có vẻ đơn giản: và chức năng ẩn danh được tạo sau đó được thực hiện trong cùng một khối. Bên trong chức năng ẩn danh này:
một yếu tố kịch bản được tạo ra
src yếu tố của nó được thiết lập để nó vị trí, sau đó
yếu tố kịch bản được thêm vào DOM
Nhưng trong khi mỗi dòng là rõ ràng, nó vẫn không rõ ràng với tôi cách exac mô hình này cho phép tải tập lệnh mà không chặn các phần tử/tài nguyên của trang xuống từ hiển thị/tải?
+1: Tôi không phải là câu trả lời, nhưng cảm ơn luồng kiến thức này. Bạn có đặt tập lệnh đơn giản (đoạn mã bạn đang hiển thị mã) trong phần HEAD, hoặc ở đầu phần BODY ngay sau thẻ OPEN
không? –điều tôi muốn làm * là đặt tập lệnh này ở cuối đầu, ngay trước '. Vì tập lệnh là trình theo dõi số lần xem trang, nên vị trí này (so với phần cuối thân máy) sẽ cung cấp số đếm chính xác hơn. Tất nhiên điều này có ý nghĩa hiệu suất, do đó vị trí Q. W/r/t của tôi ngay trước ' hoặc chỉ sau
tôi cho rằng đó là cùng một hiệu suất-khôn ngoan, mặc dù cho mục đích CMS, nó có vẻ là một chút sạch hơn để chèn/cập nhật tập lệnh trong đầu - và điều đó thậm chí có thể dành riêng cho CMS. – doug