Tối ưu hoá Các chỉ số quan trọng về trang web bằng Lighthouse

Tìm cơ hội cải thiện trải nghiệm người dùng bằng công cụ web của Chrome.

Addy Osmani
Addy Osmani

Hôm nay, chúng ta sẽ tìm hiểu các tính năng công cụ mới trong Lighthouse, PageSpeed và Công cụ cho nhà phát triển để giúp xác định cách trang web của bạn có thể cải thiện trên Các chỉ số quan trọng về trang web.

Để nhắc lại các công cụ này, Lighthouse là một công cụ nguồn mở, tự động giúp cải thiện chất lượng của trang web. Bạn có thể tìm thấy mã này trong bộ công cụ gỡ lỗi Công cụ cho nhà phát triển của Chrome và chạy công cụ này trên bất kỳ trang web nào, công khai hoặc yêu cầu xác thực. Bạn cũng có thể tìm thấy Lighthouse trong PageSpeed Insights, CIWebPageTest.

Lighthouse 7.x có các tính năng mới như ảnh chụp màn hình thành phần, giúp bạn dễ dàng kiểm tra trực quan hơn các phần trên giao diện người dùng có ảnh hưởng đến các chỉ số trải nghiệm người dùng (ví dụ: những nút nào đang góp phần thay đổi bố cục).

Chúng tôi cũng đã hỗ trợ ảnh chụp màn hình thành phần trên PageSpeed Insights, giúp bạn dễ dàng phát hiện vấn đề hơn để các trang hoạt động với hiệu suất một lần.

Ảnh chụp màn hình phần tử làm nổi bật nút DOM góp phần thay đổi bố cục trên trang

Đo lường Các chỉ số quan trọng về trang web

Lighthouse có thể tổng hợp đo lường các chỉ số Các chỉ số quan trọng về trang web, bao gồm Thời gian hiển thị nội dung lớn nhất, Mức thay đổi bố cục tích lũyTổng thời gian chặn (một proxy thử nghiệm cho Thời gian phản hồi lần tương tác đầu tiên). Các chỉ số này phản ánh thời gian tải, độ ổn định về bố cục và mức độ sẵn sàng cho lượt tương tác. Các chỉ số khác như Thời gian hiển thị nội dung đầu tiên được làm nổi bật trong các chỉ số quan trọng về trang web sau này cũng được trình bày nổi bật.

Mục "Chỉ số" của báo cáo Lighthouse bao gồm các phiên bản phòng thí nghiệm của những chỉ số này. Bạn có thể sử dụng tính năng này dưới dạng chế độ xem tóm tắt về những khía cạnh của trải nghiệm người dùng cần bạn chú ý.

Chỉ số hiệu suất của Lighthouse
Làn đường Các chỉ số quan trọng về trang web trong bảng hiệu suất của công cụ dành cho nhà phát triển
Tuỳ chọn Các chỉ số quan trọng về trang web trong bảng điều khiển Hiệu suất của công cụ cho nhà phát triển sẽ hiển thị một kênh để làm nổi bật các khoảnh khắc chỉ số, chẳng hạn như Layout Shift (LS) như trình bày ở trên.

Các chỉ số thực tế (chẳng hạn như các chỉ số trong Báo cáo trải nghiệm người dùng của Chrome hoặc Mức độ chính xác theo thời gian thực) không có giới hạn này và là nguồn bổ sung quý giá cho dữ liệu phòng thí nghiệm, vì chúng phản ánh trải nghiệm thực tế của người dùng. Dữ liệu thực địa không thể cung cấp các loại thông tin chẩn đoán bạn nhận được trong phòng thí nghiệm, vì vậy, cả hai loại thông tin này phải luôn đi kèm với nhau.

Xác định những khía cạnh mà bạn có thể cải thiện trong Các chỉ số quan trọng về trang web

Xác định thành phần Thời gian hiển thị nội dung lớn nhất

LCP là chỉ số đo lường trải nghiệm tải mà người dùng nhận thấy. Mã này đánh dấu thời điểm trong quá trình tải trang khi nội dung chính (hoặc "lớn nhất") được tải và người dùng có thể nhìn thấy.

Lighthouse có quy trình kiểm tra "phần tử Thời gian hiển thị nội dung lớn nhất" giúp xác định phần tử nào là thời gian hiển thị nội dung lớn nhất. Khi bạn di chuột qua thành phần này, thành phần đó sẽ được làm nổi bật trong cửa sổ trình duyệt chính.

Thành phần Thời gian hiển thị nội dung lớn nhất

Nếu phần tử này là một hình ảnh, thì thông tin này sẽ là một gợi ý hữu ích mà bạn nên tối ưu hoá việc tải hình ảnh. Lighthouse bao gồm một số quy trình kiểm tra việc tối ưu hóa hình ảnh để giúp bạn biết liệu hình ảnh của mình có thể nén, đổi kích thước hoặc phân phối ở định dạng hình ảnh hiện đại tối ưu hơn hay không.

Kiểm tra xem hình ảnh có kích thước phù hợp hay không

Bạn cũng có thể thấy Dấu trang LCP của Annie Sullivan hữu ích trong việc xác định nhanh thành phần LCP bằng hình chữ nhật màu đỏ chỉ bằng một lần nhấp.

Đánh dấu phần tử LCP bằng bookmarklet

Tải trước hình ảnh phát hiện muộn để cải thiện LCP

Để cải thiện Thời gian hiển thị nội dung lớn nhất, hãy tải trước hình ảnh chính quan trọng nếu trình duyệt phát hiện thấy các hình ảnh đó muộn. Quá trình khám phá muộn có thể xảy ra nếu bạn cần tải gói JavaScript trước khi người dùng có thể tìm thấy hình ảnh.

Tải trước hình ảnh hiển thị nội dung lớn nhất

Chúng tôi nhận được một số câu hỏi phổ biến về việc tải trước hình ảnh LCP mà bạn cũng có thể trình bày ngắn gọn.

Bạn có thể tải trước hình ảnh thích ứng không? Có. Giả sử chúng ta có hình ảnh chính thích ứng như được chỉ định bằng srcsetsizes bên dưới:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

Nhờ các thuộc tính imagesrcsetimagesizes đã thêm vào thuộc tính link, chúng ta có thể tải trước hình ảnh thích ứng bằng cách sử dụng cùng logic lựa chọn hình ảnh mà srcsetsizes sử dụng:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

Quá trình kiểm tra có làm nổi bật các cơ hội tải trước nếu hình ảnh LCP được xác định qua nền CSS không? Có.

Mọi hình ảnh bị gắn cờ là hình ảnh LCP cho dù thông qua nền CSS hay <img> đều là hình ảnh ứng cử viên nếu hệ thống phát hiện thấy hình ảnh đó ở độ sâu thác nước từ 3 trở lên.

Tải từng phần hình ảnh ngoài màn hình và tránh điều này cho LCP

Hình ảnh ngoài màn hình không quan trọng đối với trải nghiệm người dùng ban đầu có thể được tải từng phần. Đây là kỹ thuật trì hoãn việc tải hình ảnh xuống cho đến khi người dùng cuộn gần hình ảnh đó, giúp giảm tình trạng tranh chấp mạng đối với các nội dung quan trọng và trong một số trường hợp còn cải thiện LCP. Quy trình kiểm tra "Trì hoãn hình ảnh ngoài màn hình" có thể giúp bạn giải quyết vấn đề này:

Trì hoãn hình ảnh ngoài màn hình

Không được tải từng phần hình ảnh quan trọng trong màn hình đầu tiên (chẳng hạn như hình ảnh Thời gian hiển thị nội dung lớn nhất). Việc này có thể trì hoãn quá trình tải hình ảnh LCP. Lighthouse sẽ làm nổi bật nếu một hình ảnh LCP đang được tải từng phần không chính xác thông qua quy trình kiểm tra "Hình ảnh thời gian hiển thị nội dung lớn nhất đã được tải từng phần":

Tránh tải từng phần hình ảnh LCP

Xác định nội dung đóng góp cho CLS (Điểm số tổng hợp về mức thay đổi bố cục)

Điểm số tổng hợp về mức thay đổi bố cục là phép đo về độ ổn định của hình ảnh. Chỉ số này xác định mức độ thay đổi hình ảnh của nội dung trên một trang. Lighthouse có một quy trình kiểm tra để gỡ lỗi CLS là "Tránh thay đổi bố cục lớn".

Quá trình kiểm tra này làm nổi bật những thành phần DOM đóng góp nhiều nhất vào những thay đổi của trang. Trong cột Phần tử ở bên trái, bạn sẽ thấy danh sách các phần tử DOM này và ở bên phải là mức đóng góp tổng thể của CLS (Điểm số tổng hợp về mức thay đổi bố cục).

Quy trình kiểm tra tránh việc thay đổi bố cục lớn trong Lighthouse để làm nổi bật các nút DOM có liên quan góp phần vào CLS (Điểm số tổng hợp về mức thay đổi bố cục)

Nhờ tính năng Ảnh chụp màn hình phần tử Lighthouse mới nhất, cả hai chúng ta đều có thể xem trước trực quan các thành phần chính được ghi chú trong quá trình kiểm tra cũng như thao tác nhấp để thu phóng để xem rõ hơn:

Nhấp vào một ảnh chụp màn hình Phần tử sẽ mở rộng ảnh đó

Đối với CLS sau khi tải, bạn có thể thấy giá trị trong việc trực quan hoá liên tục bằng các hình chữ nhật là những phần tử đóng góp nhiều nhất vào CLS. Đây là một tính năng mà bạn có thể tìm thấy trong các công cụ của bên thứ ba như trang tổng quan Các chỉ số quan trọng về trang web của SpeedCurve. Đây là tính năng tôi rất thích khi sử dụng Trình tạo GIF của Layout Shift cho:

trình tạo bố cục thay đổi bố cục làm nổi bật các thay đổi

Đối với góc nhìn trên toàn trang web về các vấn đề liên quan đến việc thay đổi bố cục, tôi đã nắm bắt được rất nhiều thông tin từ báo cáo Các chỉ số quan trọng về trang web của Search Console. Điều này giúp tôi xem những loại trang trên trang web có CLS cao (trong trường hợp này giúp tự xác định những phần mẫu mà tôi cần dành thời gian để xử lý):

Search Console cho thấy các vấn đề về CLS (Điểm số tổng hợp về mức thay đổi bố cục)

Xác định CLS (Điểm số tổng hợp về mức thay đổi bố cục) qua những hình ảnh không có kích thước

Để giới hạn Điểm số tổng hợp về mức thay đổi bố cục do hình ảnh không có kích thước gây ra, hãy thêm các thuộc tính kích thước chiều rộng và chiều cao trên hình ảnh và phần tử video của bạn. Phương pháp này đảm bảo rằng trình duyệt có thể phân bổ đúng lượng không gian trong tài liệu khi hình ảnh đang tải.

Kiểm tra các phần tử hình ảnh không có chiều rộng và chiều cao rõ ràng

Vui lòng xem bài viết Đặt chiều cao và chiều rộng trên hình ảnh cũng quan trọng để có được thông tin tóm tắt về tầm quan trọng của việc suy nghĩ về kích thước và tỷ lệ khung hình của hình ảnh.

Xác định CLS (Điểm số tổng hợp về mức thay đổi bố cục) từ quảng cáo

Quảng cáo của nhà xuất bản cho Lighthouse cho phép bạn tìm cơ hội cải thiện trải nghiệm tải quảng cáo trên trang của mình, bao gồm cả nội dung đóng góp cho việc thay đổi bố cục và các tác vụ dài có thể cho biết thời điểm mà người dùng có thể sử dụng trang của bạn. Trong Lighthouse, bạn có thể bật tính năng này thông qua Trình bổ trợ cho cộng đồng.

Nội dung kiểm tra liên quan đến quảng cáo nêu bật các cơ hội giúp giảm thời gian yêu cầu và thay đổi bố cục

Hãy nhớ rằng quảng cáo là một trong những yếu tố lớn nhất đối với việc thay đổi bố cục trên web. Điều quan trọng là bạn cần:

  • Hãy cẩn thận khi đặt quảng cáo không cố định gần đầu khung nhìn
  • Loại bỏ sự thay đổi bằng cách đặt trước kích thước lớn nhất có thể cho vùng quảng cáo

Tránh các ảnh động không được ghép

Ảnh động không được ghép có thể tự hiển thị là bị giật trên các thiết bị cấp thấp hơn nếu các tác vụ JavaScript nặng nề làm cho luồng chính bận rộn. Những ảnh động như vậy có thể làm thay đổi bố cục.

Nếu phát hiện thấy một ảnh động không thể kết hợp được, thì Chrome sẽ báo cáo dấu vết đó bằng dấu vết Công cụ cho nhà phát triển. Lighthouse sẽ đọc, cho phép Chrome liệt kê những thành phần có ảnh động không được kết hợp và vì lý do gì. Bạn có thể tìm thấy các ảnh động này trong bài kiểm tra Tránh ảnh động không được ghép.

Kiểm tra để tránh các ảnh động không được ghép

Gỡ lỗi thời gian phản hồi lần tương tác đầu tiên / Tổng thời gian chặn / Tác vụ dài

Phương thức nhập đầu tiên đo lường thời gian từ khi người dùng tương tác lần đầu với một trang (ví dụ: khi họ nhấp vào một đường liên kết, nhấn vào một nút hoặc sử dụng một thành phần điều khiển tuỳ chỉnh chạy JavaScript) đến thời điểm trình duyệt thực sự có thể bắt đầu xử lý các trình xử lý sự kiện để phản hồi lượt tương tác đó. Tác vụ JavaScript dài có thể ảnh hưởng đến chỉ số này và proxy cho chỉ số này, Tổng thời gian chặn.

Kiểm tra để tránh các tác vụ trong chuỗi chính dài

Lighthouse bao gồm quy trình kiểm tra Tránh tác vụ dài trên luồng chính, trong đó liệt kê các tác vụ dài nhất trên luồng chính. Việc này có thể giúp xác định những yếu tố gây ra độ trễ đầu vào thấp nhất. Ở cột bên trái, chúng ta có thể thấy URL của các tập lệnh chịu trách nhiệm về các tác vụ dài trong chuỗi chính.

Ở bên phải, chúng ta có thể thấy thời lượng của các tác vụ này. Xin nhắc lại, tác vụ dài là những tác vụ thực thi trong thời gian dài hơn 50 mili giây. Hành động này được coi là chặn luồng chính đủ lâu để tác động đến tốc độ khung hình hoặc độ trễ đầu vào.

Nếu xem xét các dịch vụ giám sát của bên thứ ba, tôi cũng khá giống với tiến trình thực thi luồng chính trực quan của Calibre để trực quan hoá các chi phí này, trong đó làm nổi bật cả nhiệm vụ mẹ và con góp phần vào các tác vụ dài ảnh hưởng đến khả năng tương tác.

Hình ảnh về tiến trình thực thi luồng chính của Calibre có

Chặn các yêu cầu mạng để xem tác động trước/sau trong Lighthouse

Công cụ của Chrome cho nhà phát triển hỗ trợ chặn yêu cầu mạng để xem tác động của việc từng tài nguyên bị xoá hoặc không có sẵn. Điều này có thể giúp bạn hiểu được chi phí của từng tập lệnh riêng lẻ (ví dụ: trình theo dõi hoặc nhúng của bên thứ ba) có trên các chỉ số như Tổng thời gian chặn (TBT) và Thời gian tương tác.

Tính năng chặn yêu cầu mạng cũng hoạt động với Lighthouse! Hãy xem nhanh báo cáo Lighthouse cho một trang web. Điểm Perf là 63/100 với TBT là 400 mili giây. Đi sâu vào mã này, chúng tôi nhận thấy trang web này sẽ tải một polyfill của Intersection Observer trong Chrome nhưng không cần thiết. Hãy chặn nó!

Chặn yêu cầu mạng

Chúng ta có thể nhấp chuột phải vào một tập lệnh trong bảng điều khiển Mạng cho nhà phát triển và nhấp vào Block Request URL để chặn tập lệnh đó. Tại đây, chúng ta sẽ thực hiện việc này đối với polyfill của Intersection Observer.

Chặn URL yêu cầu trong Công cụ cho nhà phát triển

Tiếp theo, chúng ta có thể chạy lại Lighthouse. Lần này, chúng ta có thể thấy điểm hiệu suất đã cải thiện (70/100) vì có Tổng thời gian chặn (400 mili giây => 300 mili giây).

Cảnh sau khi chặn các yêu cầu mạng tốn kém

Thay thế các nội dung nhúng tốn kém của bên thứ ba bằng thành phần tượng trưng

Thường thì người dùng sử dụng tài nguyên của bên thứ ba để nhúng video, bài đăng trên mạng xã hội hoặc tiện ích vào các trang. Theo mặc định, hầu hết các lượt nhúng sẽ tải ngay lập tức và có thể đi kèm các tải trọng tốn kém ảnh hưởng tiêu cực đến trải nghiệm người dùng. Điều này sẽ lãng phí nếu bên thứ ba không quan trọng (ví dụ: nếu người dùng cần cuộn trước khi thấy nội dung đó).

Một mẫu để cải thiện hiệu suất của các tiện ích như vậy là tải từng tiện ích khi tương tác của người dùng. Bạn có thể thực hiện việc này bằng cách kết xuất bản xem trước nhẹ của tiện ích (thành phần tượng trưng) và chỉ tải phiên bản đầy đủ nếu người dùng tương tác với tiện ích đó. Lighthouse có một quy trình kiểm tra đề xuất các tài nguyên của bên thứ ba có thể tải từng phần với thành phần tượng trưng, chẳng hạn như tính năng nhúng video trên YouTube.

Nội dung kiểm tra nhấn mạnh việc có thể thay thế một số tài nguyên đắt đỏ của bên thứ ba

Xin lưu ý rằng Lighthouse sẽ làm nổi bật mã của bên thứ ba đang chặn luồng chính trong hơn 250 mili giây. Việc này có thể hiển thị tất cả các loại tập lệnh của bên thứ ba (bao gồm cả các tập lệnh do Google tạo ra) mà có thể nên trì hoãn hoặc tải từng phần một cách hiệu quả hơn nếu những tập lệnh này yêu cầu cuộn để xem được.

Giảm chi phí kiểm tra JavaScript của bên thứ ba

Ngoài Các chỉ số quan trọng về trang web

Ngoài việc nêu bật Các chỉ số quan trọng về trang web, các phiên bản mới của Lighthouse và PageSpeed Insights cũng cố gắng cung cấp hướng dẫn cụ thể mà bạn có thể làm theo để cải thiện tốc độ tải của các ứng dụng web nặng về JavaScript nếu bật bản đồ nguồn.

Các biện pháp này bao gồm tập hợp ngày càng nhiều các quy trình kiểm tra giúp giảm chi phí JavaScript trên trang của bạn, chẳng hạn như giảm sự phụ thuộc vào các đoạn mã polyfill và nội dung trùng lặp có thể không cần thiết cho trải nghiệm người dùng.

Để biết thêm thông tin về công cụ Các chỉ số quan trọng về trang web, hãy theo dõi tài khoản Twitter của nhóm LighthouseTính năng mới trong Công cụ cho nhà phát triển.

Hình ảnh chính của Mercedes Mehling trên Unsplash.