CSS quan trọng hoạt động như thế nào?

Trong một cuộc nói chuyện [rất được khuyến nghị] gần đây của Addy Osmani trong khuôn khổ web của Chrome. nhà phát triển/sự kiện trực tiếp, Addy giải thích cách Chloé đã tối ưu hóa trang web của họ để đạt hiệu suất và các chỉ số quan trọng về web cốt lõi của Google. Có rất nhiều điều tuyệt vời rút ra từ buổi nói chuyện, một số trong đó có thể được áp dụng vào dự án của riêng bạn một cách tương đối dễ dàng;

Để tự động tạo CSS quan trọng, chúng tôi đã phát triển một tập lệnh chạy trong thời gian xây dựng, trích xuất tất cả các khối CSS chứa thuộc tính critical: this tùy chỉnh và đưa chúng vào phần đầu của trang. Các quy tắc CSS nội tuyến bị xóa khỏi các tệp CSS gốc, được tải với mức độ ưu tiên thấp bằng kỹ thuật media=’print’

Phần trên được lấy từ nghiên cứu điển hình từ blog kỹ thuật của Chloé

Mục tiêu của nội tuyến CSS quan trọng là để ngăn nội dung không được tạo kiểu [FOUC]. CSS là một tài nguyên chặn hiển thị, có nghĩa là nó cần được tải xuống và phân tích cú pháp để tạo CSSOM. Sau đó, điều này được kết hợp với DOM để tạo cây kết xuất, được sử dụng để bố trí các phần tử khác nhau và cung cấp quy trình vẽ, cuối cùng xuất các pixel ra màn hình. Việc có một tệp CSS lớn duy nhất sẽ làm chậm quá trình bắt đầu hiển thị, vì tất cả CSS, bất kể nó có được sử dụng hay không sẽ phải được tải xuống. Nội tuyến CSS cũng sẽ tránh yêu cầu mạng tải xuống tệp CSS

Nếu bạn đã từng thử tối ưu hóa hiệu suất trang web của mình, thì có thể bạn đã chạy trang web của mình thông qua Google Page Speed ​​và nhận được một số mẹo về những gì có thể được cải thiện để làm cho trang web của bạn nhanh hơn

Trong bài đăng này, chúng tôi sẽ xem xét kỹ hơn ý nghĩa của cụm từ “Loại bỏ tài nguyên chặn hiển thị” và giải thích từng bước cách bạn có thể khắc phục điều đó

Tài nguyên chặn hiển thị

Mẹo về tốc độ trang “Loại bỏ tài nguyên chặn hiển thị”

Khi mở một trang web, bạn thường thấy một trang trống trước khi nội dung đầu tiên được hiển thị. Điều này đôi khi mất vài giây, đặc biệt là trên thiết bị di động và trên mạng chậm [3G].  

Contentful Paint đầu tiên với các tài nguyên chặn hiển thị

The reason is that by default the browser delays the page rendering [First Contentful Paint] until it has finished loading, parsing and executing all the CSS files referenced in the of your page. It does this because it needs to calculate the layout of the page. This actually makes sense, because if your browser displayed the content before the styles were fully loaded, you would see a completely unstyled page with elements jumping around while your CSS loads. That’s not the best experience, right?

Vậy chúng ta có thể làm gì để làm cho trang hiển thị nội dung nhanh hơn nhưng vẫn có giao diện đẹp mắt?

CSS quan trọng nội tuyến

Critical CSS is the smallest set of CSS rules that is necessary to show the first screen’s worth of content [“above-the-fold”, the content that is visible without scrolling]. It should be included as an inline -block as soon as possible in the section, so that it’s included in the first few TCP packets of response. The inline styles should be kept as small as possible, because it won’t be cached like other static resources, so it will be sent on each page load and we don’t want to delay the transmission of the rest of the HTML.

Mẹo chuyên nghiệp

  • CSS quan trọng phải được chuyển với 14KB phản hồi đầu tiên – đó là kích thước xấp xỉ của chuyến đi khứ hồi TCP đầu tiên

Phần còn lại của CSS phải được hoãn lại ở chân trang hoặc được tải không đồng bộ sau khi tải trang. Nhưng hãy chú ý đến những phong cách này, vì chúng tôi không muốn chuyển quá nhiều css không sử dụng và lãng phí băng thông của người dùng

Vì vậy, thay vì điều này

Bạn sẽ cần phải viết cái này

  

Do đó, nội dung của bạn sẽ được hiển thị nhanh hơn nhiều

Đầu tiên Contentful Paint với đường dẫn quan trọng CSS và phần còn lại được tải không đồng bộ

Cách tìm CSS quan trọng

Bạn có thể tạo CSS quan trọng của riêng mình theo cách thủ công bằng cách xóa tất cả biểu định kiểu khỏi trang web của mình và thêm lại quy tắc kiểu theo quy tắc cho đến khi bố cục chính và nội dung trong màn hình đầu tiên có vẻ ổn. Đây là một quá trình tẻ nhạt và một chu kỳ dài thay đổi và làm mới trong trình duyệt của bạn, đồng thời bạn sẽ cần kiểm tra nhiều kích thước màn hình và trình duyệt. Phải có một giải pháp tốt hơn

May mắn thay, có một số công cụ tuyệt vời có thể tự động tạo CSS quan trọng cho trang web của bạn

Critical được tạo bởi Addy Osmani là một mô-đun npm trích xuất CSS trong màn hình đầu tiên và có thể được tích hợp trong quy trình xây dựng giao diện người dùng của bạn với Gulp, Grunt hoặc Webpack. Nó sử dụng Penthouse và Puppeteer dưới mui xe

lộn ngược.  

  • tự động phát hiện tất cả các biểu định kiểu trên trang của bạn
  • hỗ trợ nhiều độ phân giải màn hình
  • theo tài liệu, src có thể là đường dẫn cục bộ hoặc chuỗi mã nguồn, nhưng trong các thử nghiệm của chúng tôi, nó cũng hoạt động với một URL bên ngoài

Nhược điểm.  

  • yêu cầu npm hoặc công cụ xây dựng

Cài đặt. npm i -D critical

Mã ví dụ

// index.js
const critical = require['critical'];
critical.generate[{
  src: '//www.peterbagi.de/',
  width: 1300,
  height: 900,
  inline: false
}, [err, criticalCSS] => {
  console.log[criticalCSS];
}];

// run on command line:
// node index.js

CriticalCSS được tạo bởi FilamentGroup là một mô-đun npm khác cũng có sẵn dưới dạng CLI.  

lộn ngược

  • Bạn có thể sử dụng tùy chọn “bắt buộc bao gồm” để có nhiều quyền kiểm soát hơn đối với các quy tắc được bao gồm

Nhược điểm.  

  • bạn phải chỉ định tệp CSS mà bạn muốn trích xuất các quy tắc từ đó
  • các tệp CSS và HTML phải tương đối và không thể sử dụng URL HTTP

Cài đặt. npm i -D criticalcss

mã ví dụ

// index.js
const criticalcss = require["criticalcss"];
criticalcss.getRules["path/to/styles.css", [err, output] => {
  const allRules = JSON.parse[output];
  criticalcss.findCritical["path/to/page.html", allRules, [err, output] => {
     console.log[output];
  }];
}];
// run on command line:
// node index.js

Penthouse là một công cụ mạnh mẽ và tuyệt vời nếu bạn có nhiều phong cách hoặc ứng dụng web động, chẳng hạn như. g. với góc.  

Đặt CSS quan trọng ở đâu?

Bằng cách đặt CSS quan trọng trong thẻ đầu của tệp HTML thay vì trong biểu định kiểu bên ngoài, chúng tôi giải quyết được cả hai vấn đề. Đầu tiên, trình duyệt không phải hiển thị toàn bộ trang trước khi hiển thị nội dung trong màn hình đầu tiên. Nó có thể dễ dàng tìm thấy CSS quan trọng vì nó không cần tìm ở một vị trí riêng biệt.

Bạn có nên nội tuyến CSS quan trọng?

Sử dụng CSS nội tuyến trên các thành phần quan trọng của trang giúp tăng tốc thời gian tải . Có hai khía cạnh chính ảnh hưởng đến tốc độ tải trang web. thời gian máy chủ phản hồi và gửi mã cũng như thời gian trình duyệt hiển thị mã đó thành những gì người dùng nhìn thấy.

Làm cách nào để sử dụng Tự động tối ưu hóa các quy tắc CSS quan trọng?

Sử dụng Autoptimize + Trình tạo CSS quan trọng miễn phí . Truy cập https. //pegasaas. com/critical-path-css-generator/ và nhập URL của bạn. Step 1: Go to //pegasaas.com/critical-path-css-generator/ and enter your URL. Sao chép “CSS đường dẫn quan trọng” đã tạo. Bước 2. Trong cài đặt Tự động tối ưu hóa [bật cài đặt nâng cao], trong phần 'Tùy chọn CSS', hãy chọn 'Nội tuyến và trì hoãn css' và dán css đã sao chép.

CSS nội tuyến có tải nhanh hơn không?

CSS nội tuyến có nghĩa là CSS được tải trong thẻ của HTML của trang web. Điều này nhanh hơn so với việc khách truy cập phải tải xuống các tệp CSS trực tiếp từ máy chủ; . if all the site's CSS is displayed inline it can actually slow down the load time of the entire site.

Chủ Đề