Trình duyệt chỉ định mức độ ưu tiên mặc định cho các tập lệnh dựa trên vị trí xuất hiện của tập lệnh trong tài liệu và liệu tập lệnh có các thuộc tính như async hoặc defer hay không. Việc sử dụng fetchpriority giúp nhà phát triển có quyền kiểm soát rõ ràng để đảm bảo các tập lệnh quan trọng được tải trước, trong khi các tập lệnh không cần thiết sẽ không ảnh hưởng đến quá trình này.
Cách triển khai
- Xác định tập lệnh quan trọng: Xác định tập lệnh nào là cần thiết cho chức năng cốt lõi của trang hoặc lượt tương tác ban đầu của người dùng.
- Nâng cao tập lệnh không đồng bộ quan trọng: Đối với các tập lệnh quan trọng được tải bằng
asynchoặcdefer, hãy thêm thuộc tínhfetchpriority="high"để đảm bảo các tập lệnh đó được ưu tiên trong giai đoạn khám phá. - Giảm mức độ ưu tiên cho các tập lệnh không cần thiết: Đối với các tập lệnh không cần thiết ngay lập tức (ví dụ: số liệu phân tích, quảng cáo hoặc tiện ích ở phần dưới màn hình đầu tiên), hãy thêm
fetchpriority="low"và đảm bảo các tập lệnh đó có thuộc tínhasync,deferhoặcmoduleđể tránh bị chặn. - Sắp xếp trình tự các tập lệnh chặn trình phân tích cú pháp: Sử dụng
fetchpriority="low"trên các tập lệnh chặn trình phân tích cú pháp ở cuối nội dung để ngăn các tập lệnh này tranh giành băng thông với các tài nguyên quan trọng hơn.
Mã mẫu
<!-- Elevate the priority of the critical app logic -->
<script src="/js/app.js" async fetchpriority="high"></script>
<!-- Deprioritize non-essential tracking scripts -->
<script src="/js/tracker.js" async fetchpriority="low"></script>
<!-- Deprioritize late-body scripts to favor critical images or CSS -->
<script src="/js/legacy-widgets.js" fetchpriority="low"></script>
Các phương pháp hay nhất
- BẮT BUỘC: Chỉ sử dụng
fetchpriority="high"trên tối đa 1-2 tập lệnh quan trọng để tránh tranh chấp mạng và làm giảm mức độ ưu tiên. - NÊN sử dụng
fetchpriority="high"dành riêng cho các tập lệnhasyncđược xác định là quan trọng đối với Lượt tương tác đến nội dung hiển thị tiếp theo (INP). - NÊN giảm mức độ ưu tiên cho các tập lệnh không cần thiết cho trải nghiệm người dùng ban đầu bằng cách sử dụng
fetchpriority="low". - KHÔNG sử dụng
fetchprioritytrên mọi thẻ tập lệnh; bạn chỉ nên sử dụng thuộc tính này để thay đổi phương pháp phỏng đoán mặc định của trình duyệt khi biết phương pháp đó chưa tối ưu. - KHÔNG sử dụng thuộc tính
importancekhông dùng nữa. Tính năng này đã được thay thế bằngfetchpriority.
Chiến lược dự phòng
Thuộc tính fetchpriority là một cải tiến tăng dần. Những trình duyệt không hỗ trợ thuộc tính này sẽ bỏ qua thuộc tính và sử dụng logic lập lịch biểu nội bộ mà không gặp lỗi. Bạn không cần phát hiện tính năng rõ ràng hoặc logic dự phòng cho việc sử dụng cơ bản.