Hiệu năng web

Hiệu năng web phản ánh tốc độ một trang web được load và hiển thị tới người dùng. Người dùng cảm nhận trang web nhanh khi toàn bộ quá trình load và render diễn ra nhanh nhất có thể, do đó hiệu năng của mỗi giai đoạn ảnh hưởng trực tiếp tới toàn bộ giai đoạn sau.

Quá trình hiển thị trang web

Browser hiển thị một trang web qua các giai đoạn nối tiếp, trong đó việc load HTML là blocking còn parsing HTML và load các resource khác là non-blocking.

flowchart LR
    load[Load HTML] --> parse[Parse HTML]
    parse --> res[Load JS, CSS, font, image]
    res --> render[Render loop]
    render --> calc[Calculate style, layout, paint]
    render --> exec[Execute JS]

Vòng lặp render gồm hai tác vụ blocking trên main thread là calculate style/layout/paint cho các element và execute JS. Bất kỳ tác vụ nào chiếm main thread quá lâu đều làm trễ thời điểm nội dung hiển thị tới người dùng.

Sáu user-centric metric

Google đề xuất sáu chỉ số đo trải nghiệm người dùng (user-centric metric). Các chỉ số này đều là hệ quả của quá trình load và render ở trên, nên việc tối ưu phải bắt đầu từ việc nắm rõ cách trang web được render.

Quan hệ giữa các metric

Các metric không độc lập mà chia sẻ chung nhóm nguyên nhân. Blocking resource (CSS, font) chi phối FCP, LCP và Speed Index; main thread blocking time chi phối TBT, TTI và Speed Index. Vì FCP đứng trước LCP trong pipeline, cải thiện một metric ở giai đoạn sớm thường cải thiện theo các metric ở giai đoạn sau.