Quá trình chuyển đổi này, bao gồm cả việc xác định CSS quan trọng/không quan trọng, nội tuyến CSS quan trọng và tải chậm CSS không quan trọng, có thể được thực hiện tự động bởi các mô-đun Tối ưu hóa tốc độ trang cho nginx, apache, IIS, ATS và Open Show
Xem thêm chức năng loadCSS để giúp tải CSS không đồng bộ, có thể hoạt động với Critical, một công cụ để trích xuất CSS quan trọng từ một trang web Các kiểu quan trọng cần thiết để tạo kiểu cho nội dung trong màn hình đầu tiên được nội tuyến và áp dụng cho tài liệu ngay lập tức. đầy đủ nhỏ. css được tải sau khi vẽ trang ban đầu. Các kiểu của nó được áp dụng cho trang sau khi tải xong mà không chặn kết xuất ban đầu của nội dung quan trọng Lưu ý rằng nền tảng web sẽ sớm hỗ trợ tải biểu định kiểu theo cách không chặn kết xuất mà không cần phải sử dụng JavaScript, sử dụng Nhập HTML Không nội tuyến các URI dữ liệu lớnHãy cẩn thận khi nội tuyến URI dữ liệu trong tệp CSS. Mặc dù việc sử dụng có chọn lọc các URI dữ liệu nhỏ trong CSS của bạn có thể hợp lý, nhưng việc đặt nội tuyến các URI dữ liệu lớn có thể khiến kích thước của CSS trong màn hình đầu tiên của bạn lớn hơn, điều này sẽ làm chậm thời gian kết xuất trang Không nội dòng thuộc tính CSSNội tuyến các thuộc tính CSS trên các phần tử HTML (e. g. , Tôi đã tự hỏi những nhược điểm về hiệu suất khi chúng tôi đang sử dụng ReactJS là gì (điều này cũng giống với bất kỳ khung nào khác) chỉ với các kiểu nội tuyến, so với việc sử dụng các biểu định kiểu CSS bên ngoài Chúng tôi biết rằng kích thước của các kiểu nội tuyến có thể rất lớn (đặc biệt nếu chúng tôi lặp lại các phần tử). Đây chính xác là tình huống chúng ta sẽ kiểm tra ở đây. Bằng cách này, chúng tôi có thể kiểm tra hiệu suất của trình duyệt khi phân tích cú pháp, lưu và áp dụng một loạt các kiểu nội tuyến, đối với một biểu định kiểu CSS duy nhất Bản tóm tắt
Tôi nghĩ cả hai cách đều hữu ích và có một lĩnh vực ứng dụng cụ thể Như Michael Chan đã nói tại React Europe (video)
Tôi quyết định thử một thứ ngu ngốc và không thực sự liên quan đến một trường hợp kinh doanh thực tế
Nó không liên quan vì chúng tôi sẽ không tạo một bảng lớn trong DOM của chúng tôi. Chúng ta nên có một số loại cuộn ảo/kết xuất lười biếng Nhưng, thử nghiệm vô hại thì sao, chỉ để kiểm tra xem điều đó có chậm hơn khi tôi cuộn hay không và thời gian kết xuất thì sao? Chrome 45b, Phản ứng 0. 13. 3 Kinh nghiệmVì vậy, chúng tôi tạo ra một Chúng tôi sẽ kiểm tra
Bộ xương của thành phần ReactJS là
Một số phong cách ngẫu nhiên cho 1
Và tương tự trong CSS cho biểu định kiểu
Về cơ bản, đây là thiết kế đẹp này. Kết quảMốc thời gianTôi không tìm thấy sự khác biệt khi cuộn Dòng thời gian Chrome DevTools hỗ trợ nhận thức của tôi. không khác biệt, không giảm fps Thực tế là DOM là nội tuyến hoặc trong biểu định kiểu CSS bên ngoài không thành vấn đề. Tôi đoán nó đã có trong bộ nhớ trình duyệt khi nó được hiển thị nên nó không ảnh hưởng đến độ mượt mà Kích thước của DOMKhông ngạc nhiên. kích thước DOM rất lớn với các kiểu nội tuyến và tỷ lệ tuyến tính với số lượng hàng Loại1.000 hàng10.000 hàngRatioCSS517.725 ký tự~5.177.250 ký tựx10Inline2.283.742 ký tự~22.837.420 ký tựx10x4. 4x4. 4Đó rõ ràng là điều cần tính đến nếu bạn thực hiện một số javascript phổ quát. 2.000.000 ký tự là 2MB dữ liệu. (nhưng dù sao thì ai cũng gửi một cái bàn lớn?. ) Như calebwright đã chỉ ra trong các nhận xét, qua mạng, chúng tôi thường nén nội dung. Không có nội dung ngẫu nhiên trong bảng, DOM 2 MB sẽ nén thành 200k Ngoài ra, như Daniel Meneses đã nói, với SSR, các kiểu nội tuyến sẽ được tải xuống mọi lúc (một phần của HTML), trong khi biểu định kiểu CSS sẽ được tải xuống một lần. (nhờ bộ nhớ cache của trình duyệt) Đã đến lúc gắn kết DOMChúng tôi bắt đầu hẹn giờ theo phương pháp 2 và kết thúc khi 1 được gọiReact đã hoàn thành công việc chuyển đổi DOM ảo thành DOM và đã đưa nó vào nút được gắn kết của chúng tôi Tôi dành thời gian với phiên bản phát triển của React, vì tôi đã bắt đầu và sử dụng phiên bản sản xuất sau đó. Chúng không nên được tính đến, nó không liên quan trong trường hợp của chúng tôi Loại1.000 hàng10.000 hàngRatioCSS (gỡ lỗi)650ms-750ms6.000ms~x10Inline (gỡ lỗi)1.000ms-1100ms10.000ms~x10CSS310ms2.300ms~x7. 5Inline600ms4,900ms~x8x2x2. 1Mất gấp đôi thời gian để chuyển đổi DOM ảo của chúng tôi với các kiểu nội tuyến thành DOM và gắn kết nó Đồng bằng giảm với ít hàng hơn nhưng nó vẫn còn đáng kể. 70ms (css) so với 105ms (nội tuyến) cho 100 hàng (x1. 5) thời gian kết xuấtDOM được gắn kết, trình duyệt cần hiển thị bảng Chúng tôi cho rằng sẽ mất nhiều thời gian hơn để hiển thị các kiểu nội tuyến, bởi vì nó có nhiều thứ hơn để phân tích cú pháp và lưu trữ mọi thuộc tính 4 của mọi 5Loại1.000 hàng10.000 hàngRatioCSS (gỡ lỗi)1.100ms-1.200ms9.500ms~x10Inline (gỡ lỗi)1.500-1.600ms14.000ms~x10CSS720ms6.000ms~x8Inline1.080ms9.400ms~x8. 7x1. 5x1. 56Vẫn còn một chi phí nhỏ Tôi đoán những màn trình diễn đó khá phụ thuộc vào trình duyệt Còn trình duyệt khác thì sao?Tôi đã dùng thử Edge với 10.000 hàng Typemount hẹn giờ kết xuất thời gianCSS4,115ms11,591msInline11,418ms21,113msx2. 7x1. 8Các con số gấp đôi số của Chrome. . khóc Sự kết luậnĐó là hành vi dự kiến. Ít nhất, chúng ta có một số con số bây giờ Các kiểu nội tuyến chiếm nhiều kích thước hơn trong DOM, được chuyển đổi chậm hơn từ VDOM (có thể có tác động lớn hơn đến bộ nhớ) và mất nhiều thời gian hơn để trình duyệt xử lý CSS nội tuyến có nhanh hơn bên ngoài không?Sự khác biệt chính giữa CSS nội tuyến và CSS bên ngoài là CSS nội tuyến được xử lý nhanh hơn vì nó chỉ yêu cầu trình duyệt tải xuống 1 tệp trong khi .
Tại sao CSS nội tuyến không được khuyến nghị?Tuy nhiên, nó có khả năng gây ra vấn đề về khả năng bảo trì do HTML và các kiểu được liên kết được liên kết chặt chẽ với nhau . Điều này có thể khiến việc phân chia công việc giữa các thành viên khác nhau trong nhóm trở nên khó khăn hơn và có thể làm phình to tệp HTML.
Sử dụng CSS nội tuyến có tốt không?Kiểu nội tuyến, mặc dù chúng có mục đích, nhưng thường không phải là cách tốt nhất để duy trì trang web của bạn . Họ đi ngược lại mọi thông lệ tốt nhất. Kiểu nội tuyến không tách biệt nội dung khỏi thiết kế. Các kiểu nội tuyến hoàn toàn giống với phông chữ được nhúng và các thẻ thiết kế phức tạp khác mà các nhà phát triển hiện đại chống lại.
Nhược điểm của CSS nội tuyến là gì?Nhược điểm của CSS nội tuyến. Việc thêm các quy tắc CSS vào từng phần tử HTML sẽ mất thời gian và làm cho cấu trúc HTML của bạn trở nên lộn xộn . Rất khó để theo kịp, tái sử dụng và mở rộng quy mô. Kích thước và thời gian tải trang của bạn có thể bị ảnh hưởng bởi việc tạo kiểu cho nhiều thành phần. |