Cách The Economic Times vượt qua các ngưỡng của Các chỉ số quan trọng về trang web và đạt tỷ lệ thoát tổng thể cao hơn 43%

Việc tối ưu hoá Các chỉ số quan trọng về trang web trên trang web của The Economic Times đã cải thiện đáng kể trải nghiệm người dùng và giảm đáng kể tỷ lệ thoát trên toàn bộ trang web.

Anshu Sharma
Anshu Sharma
Prashant Mishra
Prashant Mishra
Sumit Gugnani
Sumit Gugnani

Khi tốc độ Internet được cải thiện mỗi ngày, người dùng mong muốn các trang web sẽ phản hồi và hoạt động nhanh hơn bao giờ hết. The Economic Times xử lý hơn 45 triệu người dùng hoạt động hằng tháng. Bằng cách tối ưu hoá cho Các chỉ số quan trọng về trang web trên toàn miền, trên các trang AMP và không phải AMP, chúng tôi đã giảm được đáng kể tỷ lệ thoát và cải thiện trải nghiệm đọc.

Đo lường tác động

Chúng tôi tập trung vào Thời gian hiển thị nội dung lớn nhất (LCP)Điểm số tổng hợp về mức thay đổi bố cục (CLS), vì những chỉ số này quan trọng nhất để mang đến trải nghiệm đọc tuyệt vời cho người dùng. Sau khi triển khai các bản sửa lỗi về hiệu suất khác nhau như mô tả bên dưới, The Economic Times đã cải thiện đáng kể các chỉ số trong báo cáo Thử nghiệm người dùng của Chrome (CrUX) trong vòng vài tháng.

Nhìn chung, CLS cải thiện 250% từ 0,25 lên 0,09. Nhìn chung, LCP cải thiện 80% từ 4,5 giây xuống còn 2,5 giây.

Ngoài ra, giá trị LCP trong phạm vi "Kém" đã giảm 33% từ tháng 10 năm 2020 đến tháng 7 năm 2021:

Các bản phân phối LCP được nhóm theo tháng, bắt đầu từ tháng 10/2020 và kết thúc vào tháng 7/2021. Giá trị LCP được phân loại là 'Kém' giảm từ 15,03% xuống 10,08%.

Ngoài ra, giá trị CLS trong phạm vi "Kém" giảm 65%, còn giá trị CLS trong phạm vi "Tốt" tăng 20% trong cùng khoảng thời gian:

Các mức phân bổ CLS được nhóm theo tháng, bắt đầu từ tháng 10 năm 2020 và kết thúc vào tháng 7 năm 2021. Số lượng giá trị CLS được phân loại là "Kém" giảm từ 25,92% xuống 9% và số lượng giá trị CLS được phân loại là "Tốt" tăng từ 62,62% lên 76,5%.

Kết quả là The Economic Times (trước đây không đáp ứng ngưỡng Các chỉ số quan trọng về trang web) nay đã vượt qua ngưỡng Các chỉ số quan trọng về trang web trên toàn bộ nguồn gốc và giảm 43% tỷ lệ thoát về tổng thể.

Ảnh động trước và sau trang Bài viết của The Economic Times.

LCP là gì và chúng tôi đã cải thiện LCP như thế nào?

Phần tử lớn nhất là phần tử phù hợp nhất để cải thiện trải nghiệm người dùng và nhận diện tốc độ tải. Các chỉ số hiệu suất như Thời gian hiển thị nội dung đầu tiên (FCP) chỉ thể hiện trải nghiệm ban đầu khi tải trang. Mặt khác, LCP báo cáo thời gian hiển thị của phần hình ảnh, văn bản hoặc video lớn nhất mà người dùng nhìn thấy.

Ngoài việc chuyển sang một nhà cung cấp DNS có tốc độ nhanh hơn và việc tối ưu hoá hình ảnh, dưới đây là một số kỹ thuật đã áp dụng để cải thiện LCP.

Yêu cầu quan trọng trước tiên

Vì tất cả các trình duyệt hiện đại đều hạn chế số lượng yêu cầu đồng thời nên nhà phát triển cần phải ưu tiên tải nội dung quan trọng trước. Để tải một trang web phức tạp, chúng tôi cần tải các nội dung như phần tử tiêu đề, CSS, tài nguyên JavaScript, hình ảnh chính, nội dung bài viết, nhận xét, tin tức, chân trang và quảng cáo có liên quan khác. Chúng tôi đã đánh giá những yếu tố cần thiết cho LCP và cung cấp lựa chọn ưu tiên để tải các mục đó trước để cải thiện LCP. Chúng tôi cũng đã trì hoãn các lệnh gọi không thuộc lượt hiển thị trang ban đầu.

Giao diện văn bản

Chúng tôi đã thử nghiệm với thuộc tính font-display vì thuộc tính này ảnh hưởng đến cả LCP và CLS. Chúng tôi đã thử font-display: auto; và sau đó chuyển sang font-display: swap;. Tính năng này hiển thị văn bản ban đầu bằng phông chữ phù hợp nhất và có sẵn nhất, sau đó chuyển sang phông chữ khi được tải xuống. Nhờ vậy mà văn bản của chúng tôi được hiển thị nhanh chóng, không phụ thuộc vào tốc độ mạng.

Nén tốt hơn

Brotli là một thuật toán nén thay thế cho Gzip và Deflate do Google phát triển. Chúng tôi đã thay thế phông chữ và thành phần, đồng thời thay đổi định dạng nén máy chủ từ Gzip sang Brotli để thu hẹp phạm vi hoạt động:

  • Tệp JavaScript nhỏ hơn 15% so với Gzip.
  • Tệp HTML nhỏ hơn 18% so với Gzip.
  • Tệp CSS và phông chữ nhỏ hơn 17% so với Gzip.

Kết nối trước với các miền của bên thứ ba

Bạn nên sử dụng preconnect cẩn thận vì phương thức này vẫn có thể chiếm thời gian quý báu của CPU, đồng thời làm chậm các tài nguyên quan trọng khác, đặc biệt là đối với các kết nối bảo mật.

Tuy nhiên, nếu biết rằng sẽ tìm nạp một tài nguyên trên miền của bên thứ ba, thì preconnect vẫn ổn. Nếu việc này thỉnh thoảng xảy ra trên một trang web có lưu lượng truy cập cao, thì preconnect có thể kích hoạt hoạt động TCP và TLS không cần thiết. Do đó, dns-prefetch phù hợp hơn với tài nguyên của bên thứ ba (ví dụ: mạng xã hội, số liệu phân tích, v.v.) để thực hiện tra cứu DNS trước.

Chia mã thành nhiều phần

Trong phần đầu của trang web, chúng tôi chỉ tải các tài nguyên có chứa một phần thiết yếu của logic kinh doanh hoặc quan trọng đối với việc hiển thị trang trong màn hình đầu tiên. Hơn nữa, chúng tôi chia mã thành nhiều phần bằng phương pháp phân tách mã. Điều này giúp chúng tôi cải thiện hơn nữa LCP của trang.

Lưu vào bộ nhớ đệm tốt hơn

Đối với tất cả các tuyến giao diện người dùng, chúng tôi thêm một lớp Redis phân phát các mẫu từ bộ nhớ đệm. Điều này làm giảm thời gian tính toán trên máy chủ và xây dựng toàn bộ giao diện người dùng trong mỗi yêu cầu, do đó giảm LCP trong các yêu cầu tiếp theo.

Tóm tắt các Mục tiêu và thành tích LCP

Trước khi bắt đầu dự án tối ưu hoá, nhóm đã đo điểm chuẩn điểm LCP của họ ở 4,5 giây (đối với phân vị thứ 75 của người dùng, dựa trên dữ liệu trường trong báo cáo CrUX). Sau dự án tối ưu hoá, thời lượng này giảm xuống còn 2,5 giây.

Các bản phân phối LCP từ tháng 9 năm 2020 đến tháng 6 năm 2021. Nhìn chung, phân vị thứ 75 của giá trị LCP quan sát được trong báo cáo Trải nghiệm người dùng trên Chrome cho thấy giá trị LCP "Kém" giảm 8,97%. Mức giảm tổng thể về thời gian LCP ở phân vị thứ 75 là 200 mili giây, với 77,63% giá trị LCP nằm trong phạm vi "Tốt".
Nguồn: Báo cáo CrUX thuộc LCP tổng thể của Thời báo kinh tế

CLS là gì và chúng tôi đã cải thiện CLS bằng cách nào?

Bạn có bao giờ nhận thấy bất kỳ chuyển động không mong muốn nào của nội dung trang trong khi duyệt trang web không? Một nguyên nhân của vấn đề này là việc tải không đồng bộ nội dung nghe nhìn (hình ảnh, video, quảng cáo, v.v.) trên trang có kích thước không xác định. Ngay khi tải, tài nguyên nội dung đa phương tiện sẽ thay đổi bố cục của trang.

Chúng ta sẽ đề cập đến các biện pháp đã thực hiện để cải thiện CLS trên trang web của The Economic Times.

Sử dụng phần giữ chỗ

Chúng tôi đã sử dụng phần giữ chỗ được tạo kiểu cho các đơn vị quảng cáo và phần tử nội dung nghe nhìn có kích thước đã biết để tránh thay đổi bố cục khi thư viện quảng cáo tải và hiển thị quảng cáo trên trang. Điều này đảm bảo việc thay đổi bố cục sẽ được loại bỏ bằng cách dành riêng không gian cho quảng cáo.

Ảnh so sánh song song trang web của The Economic Times được minh hoạ trên điện thoại di động. Ở bên trái, phần giữ chỗ màu xám được dành riêng cho hình ảnh chính của bài viết. Ở bên phải, trình giữ chỗ được thay thế bằng hình ảnh đã tải.

Phương diện vùng chứa được xác định

Chúng tôi đã chỉ định kích thước rõ ràng cho tất cả hình ảnh và vùng chứa để công cụ trình duyệt không cần phải tính toán chiều rộng và chiều cao của phần tử DOM khi chúng có sẵn. Điều này giúp tránh thay đổi bố cục một cách không cần thiết và tránh phải thực hiện thêm thao tác vẽ.

Tóm tắt các mục tiêu và thành tích CLS

Trước khi bắt đầu dự án tối ưu hoá, nhóm này đã đo điểm chuẩn CLS ở mức 0,25. Chúng tôi đã giảm được đáng kể 90% xuống còn 0,09.

Các mức phân bổ CLS hiển thị trong Báo cáo trải nghiệm người dùng trên Chrome. 76% giá trị CLS là "Tốt", 15% là "Khá" và 9% là "Kém". Phân vị thứ 75 của trải nghiệm người dùng trên trang web The Economic Times tổng thể có CLS là 0,09.

Độ trễ đầu vào đầu tiên (FID) là gì và chúng tôi đã cải thiện độ trễ này bằng cách nào?

Thời gian phản hồi lần tương tác đầu tiên là chỉ số theo dõi khả năng phản hồi của trang web đối với hoạt động đầu vào của người dùng. Nguyên nhân chính của điểm FID thấp là hoạt động JavaScript nặng nề khiến luồng chính của trình duyệt luôn bận rộn, điều này có thể làm chậm các tương tác của người dùng. Chúng tôi đã cải thiện FID theo một số cách.

Chia nhỏ các tác vụ JavaScript dài

Tác vụ dài là những tác vụ có thời lượng từ 50 mili giây trở lên. Các tác vụ dài chiếm luồng chính của trình duyệt và ngăn luồng này phản hồi hoạt động đầu vào của người dùng. Chúng tôi đã chia các tác vụ chạy trong thời gian dài thành các tác vụ nhỏ hơn nếu có thể theo yêu cầu của người dùng, giúp giảm tình trạng cồng kềnh trên JavaScript.

Thời gian của CPU được phân tích theo loại hoạt động trong bảng hiệu suất của Công cụ cho nhà phát triển của Chrome. Đã dành 143 mili giây để lập lịch tải tài nguyên. Đã dành 4553 mili giây cho JavaScript. Đã dành 961 mili giây để kết xuất công việc. Đã dành 191 mili giây cho các thao tác vẽ. 1488 mili giây đối với các tác vụ của hệ thống, trong đó thời gian không hoạt động là 3877 mili giây. Tổng khung thời gian là 11212 mili giây.

Hoãn JavaScript không dùng đến

Chúng tôi ưu tiên nội dung trang hơn tập lệnh của bên thứ ba (chẳng hạn như số liệu phân tích) để đảm bảo trang có khả năng thích ứng nhanh hơn. Tuy nhiên, một số thư viện có một số giới hạn nhất định vì bạn cần tải các thư viện này vào tài liệu <head> để theo dõi chính xác hành trình của người dùng.

Giảm bớt hình dán polyfill

Chúng tôi đã giảm bớt sự phụ thuộc vào một số polyfill và thư viện, vì trình duyệt hỗ trợ các API hiện đại và có ít người dùng hơn sử dụng các trình duyệt cũ như Internet Explorer.

Tải từng phần quảng cáo

Tải từng phần các quảng cáo dưới màn hình đầu tiên giúp giảm thời gian chặn luồng chính, nhờ đó cải thiện FID.

Tóm tắt các mục tiêu và thành tích của FID

Từ các thử nghiệm thông thường, hiện nay chúng tôi đã có thể giảm FID từ 200 mili giây xuống dưới 50 mili giây.

Các bản phân phối FID hiển thị trong Báo cáo trải nghiệm người dùng trên Chrome. 86% giá trị CLS là &quot;Tốt&quot;, 10% là &quot;Khá&quot; và 4% là &quot;Kém&quot;. Phân vị thứ 75 về trải nghiệm người dùng trên trang web của The Economic Times nói chung có FID là 44 mili giây.

Ngăn ngừa sự hồi quy

Economics Times dự định triển khai tính năng kiểm tra hiệu suất tự động trong phiên bản chính thức để tránh hiện tượng hồi quy hiệu suất trang. Họ dự định đánh giá Lighthouse-CI để tự động hoá các thử nghiệm trong phòng thí nghiệm, nhằm ngăn chặn sự hồi quy trên nhánh sản xuất.