Trích xuất và cùng dòng CSS quan trọng bằng các thẻ Quan trọng

Cho dù bạn sử dụng thư viện giao diện người dùng hay tạo kiểu thủ công, việc vận chuyển một lượng lớn CSS sẽ trì hoãn quá trình hiển thị vì trình duyệt phải tải xuống và phân tích cú pháp tệp CSS trước khi có thể hiển thị trang.

Thư viện kem thích ứng này được xây dựng bằng Bootstrap. Các thư viện giao diện người dùng như Bootstrap giúp đẩy nhanh quá trình phát triển, nhưng điều đó thường đi kèm với việc CSS cồng kềnh và không cần thiết, có thể làm chậm thời gian tải của bạn. Tự thân khởi động 4 có kích thước 187 KB, trong khi Giao diện người dùng ngữ nghĩa, một thư viện giao diện người dùng khác, có dung lượng không nén khổng lồ là 730 KB. Ngay cả khi được rút gọn và nén, Bootstrap vẫn nặng khoảng 20 KB, vượt xa ngưỡng 14 KB cho lượt khứ hồi đầu tiên.

Critical là công cụ trích xuất, giảm kích thước và nội dòng CSS trong màn hình đầu tiên. Điều này cho phép hiển thị nội dung trong màn hình đầu tiên sớm nhất có thể, ngay cả khi CSS cho các phần khác của trang chưa được tải. Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng mô-đun npm của Critical.

Đo

  • Để xem trước trang web, hãy nhấn vào View App (Xem ứng dụng), sau đó nhấn vào Fullscreen toàn màn hình (Toàn màn hình).

Cách chạy quy trình kiểm tra Lighthouse trên trang web này:

  1. Nhấn tổ hợp phím "Control+Shift+J" (hoặc "Command+Option+J" trên máy Mac) để mở Công cụ cho nhà phát triển.
  2. Nhấp vào thẻ Lighthouse.
  3. Nhấp vào Thiết bị di động.
  4. Chọn hộp kiểm Hiệu suất.
  5. Bỏ đánh dấu các hộp đánh dấu còn lại trong phần Kiểm tra.
  6. Nhấp vào Mô phỏng 3G nhanh, Giảm tốc độ CPU 4 lần.
  7. Chọn hộp kiểm Xoá bộ nhớ. Khi bạn chọn tuỳ chọn này, Lighthouse sẽ không tải tài nguyên từ bộ nhớ đệm, mô phỏng trải nghiệm của khách truy cập lần đầu tiên trên trang.
  8. Nhấp vào Run Testings (Chạy các hoạt động kiểm tra).

Bảng điều khiển kiểm tra của Công cụ của Chrome cho nhà phát triển, sử dụng Lighthouse

Khi chạy quy trình kiểm tra trên máy, kết quả chính xác có thể khác nhau, nhưng ở chế độ xem cuộn phim, bạn sẽ nhận thấy ứng dụng có một màn hình trống khá một lúc trước khi cuối cùng mới hiển thị nội dung. Đây là lý do Thời gian hiển thị nội dung đầu tiên (FCP) cao và điểm hiệu suất tổng thể lại không tốt.

Kiểm tra Lighthouse cho thấy điểm hiệu suất là 84, FCP là 3 giây và chế độ xem cuộn phim khi tải ứng dụng

Lighthouse có thể giúp bạn khắc phục các vấn đề về hiệu suất, vì vậy, hãy tìm giải pháp trong mục Cơ hội. Loại bỏ tài nguyên chặn hiển thị được liệt kê là một cơ hội và đó chính là điểm mấu chốt!

Danh sách mục "Cơ hội" trong kiểm tra Lighthouse "Loại bỏ tài nguyên chặn hiển thị"

Tối ưu hoá

  • Nhấp vào Remix để chỉnh sửa (Remix) để chỉnh sửa dự án.

Để tăng tốc, Critical đã được cài đặt sẵn và bạn có thể đưa một tệp cấu hình trống vào lớp học lập trình này.

Trong tệp cấu hình critical.js, hãy thêm nội dung tham chiếu đến Critical (Quan trọng) rồi gọi hàm critical.generate(). Hàm này chấp nhận một đối tượng chứa cấu hình.

const critical = require('critical');

critical.generate({
    // configuration
},(err, output) => {
  if (err) {
    console.error(err);
  } else if (output) {
    console.log('Generated critical CSS');
  }
});

Bạn không bắt buộc phải xử lý lỗi nhưng đây là một cách dễ dàng để đánh giá mức độ thành công của thao tác trong bảng điều khiển.

Định cấu hình quan trọng

Bảng dưới đây trình bày một số tuỳ chọn Quan trọng hữu ích. Bạn có thể xem tất cả các tuỳ chọn có sẵn trên GitHub.

Lựa chọn Loại Giải thích
base string Thư mục cơ sở cho các tệp của bạn.
src string Tệp nguồn HTML.
dest string Mục tiêu của tệp đầu ra. Nếu CSS cùng dòng, tệp đầu ra là HTML. Nếu không, dữ liệu đầu ra sẽ là tệp CSS.
width, height số điện thoại Chiều rộng và chiều cao của khung nhìn tính bằng pixel.
dimensions mảng Chứa các đối tượng có thuộc tính chiều rộng và chiều cao. Các đối tượng này đại diện cho khung nhìn mà bạn muốn nhắm mục tiêu với CSS trong màn hình đầu tiên. Nếu bạn có truy vấn phương tiện trong CSS, điều này cho phép bạn tạo CSS quan trọng bao gồm nhiều kích thước khung nhìn.
inline boolean Khi đặt thành true, CSS quan trọng được tạo sẽ nằm cùng với tệp nguồn HTML.
minify boolean Khi bạn đặt giá trị này thành true, Điểm quan trọng sẽ giảm kích thước CSS quan trọng đã tạo. Có thể bỏ qua khi trích xuất CSS quan trọng cho nhiều độ phân giải vì Critical tự động giảm kích thước để tránh đưa vào quy tắc trùng lặp.

Dưới đây là ví dụ về cấu hình để trích xuất CSS quan trọng cho nhiều độ phân giải. Bạn có thể thêm ứng dụng này vào critical.js hoặc thử nghiệm và điều chỉnh các tuỳ chọn.

critical.generate({
  base: 'public/',
  src: './index.html',
  dest: './index.html',
  inline: true,
  dimensions: [
    {
      height: 500,
      width: 300,
    },
    {
      height: 720,
      width: 1280,
    },
  ]
}, (err, output) => {
  if (err) {
    console.error(err);
  } else if (output) {
    console.log('Generated critical CSS');
  }
});

Trong ví dụ này, index.html là cả tệp nguồn và tệp đích vì tuỳ chọn inline được đặt thành true. Trước tiên, Critical đọc tệp nguồn HTML, trích xuất CSS quan trọng, sau đó ghi đè index.html bằng CSS quan trọng cùng dòng trong <head>.

Mảng dimensions có hai kích thước khung nhìn được chỉ định: 300 x 500 cho màn hình cực nhỏ và 1280 x 720 cho màn hình máy tính xách tay tiêu chuẩn.

Bạn bỏ qua tuỳ chọn minify vì cột Quan trọng tự động giảm kích thước CSS trích xuất khi có nhiều kích thước khung nhìn được chỉ định.

Hoạt động chạy quan trọng

Thêm Quan trọng vào tập lệnh của bạn trong package.json:

scripts: {
  "start": "node server.js",
  "critical": "node critical.js"
}
  1. Nhấp vào Thiết bị đầu cuối (lưu ý: nếu nút Thiết bị đầu cuối không hiển thị, bạn có thể cần phải sử dụng tùy chọn Toàn màn hình).

Để tạo CSS quan trọng, trong bảng điều khiển, hãy chạy:

npm run critical
refresh
Thông báo thành công có nội dung &quot;Đã tạo CSS quan trọng&quot; trong bảng điều khiển
Thông báo thành công trong bảng điều khiển

Hiện tại, trong thẻ <head> của index.html, CSS quan trọng được tạo nằm giữa các thẻ <style>, theo sau là một tập lệnh tải phần còn lại của CSS một cách không đồng bộ.

index.html với CSS quan trọng cùng dòng
CSS quan trọng cùng dòng

Đo lại

Làm theo các bước từ đầu lớp học lập trình để chạy lại quy trình kiểm tra hiệu suất của Lighthouse. Kết quả bạn nhận được sẽ có dạng như sau:

Kiểm tra Lighthouse cho thấy điểm hiệu suất là 100, FCP 0,9 giây và chế độ xem cuộn phim khi tải ứng dụng được cải thiện