Tối ưu DOM trong Oxygen Builder

MỤC LỤC
Oxygen được biết đến là một trong những Builder website WordPress có tốc độ load tốt nhất hiện nay.
Nhanh nhất không có nghĩa nó là tốt nhất. Thời gian đầu ra mắt năm 2019, Oxygen Builder như một làn gió mới. Nó hoàn toàn khác biệt so với phần còn lại trong hệ sinh thái Page Builder, Theme Builder của WordPress.
Oxygen chính là người tiên phong về Builder tốc độ. Cho đến ngày nay có hàng tá Builder mang lại tốc độ đáng kinh ngạc tương tự như Oxygen, điển hình là Bricks, Cwicly, Zion,... Cùng với việc Breakdance sản phẩm mới cùng nhà với Oxygen được ra mắt, có vẻ Oxygen đang dần tụt lại về sau.
Nhưng nó sẽ không mất đi, chúng ta cần làm cho nó tốt hơn.
Hiểu nôm na DOM là các nút phần thử trong ngôn ngữ HTML.
<html>
.<head>, <body>, <section>, <div>
và nhiều loại phần tử khác. Các thẻ này là các phần tử HTML, và mỗi thẻ có thể chứa các nút con.<p>
, <span>
, và thậm chí cả trong các thẻ như <title>
hoặc <h1>
. Node này không có các nút con.Ví dụ tôi có mã HTML như thế này:
<html>
<head></head>
<body>
<section>
<h1>heading</h1>
</section>
</body>
</html>
Cấu trúc DOM của mã trên sẽ được hiểu như thế này:
document
├── head
└── body
└── section
└── h1
Trong đó:
document
là nút gốc (document node) của tài liệu HTML.head
và body
là các nút phần tử (element node).section
là nút phần tử có chứa nút con h1
.h1
là nút văn bản (text node).Cây DOM lớn có thể làm chậm hiệu suất trang web của bạn:
document.querySelectorAll('li')
, bạn có thể vô tình lưu trữ các tham chiếu đến một số lượng rất lớn các nút, có thể lấn át bộ nhớ khả dụng trên thiết bị của người dùng.Sau khi đọc phần trên, bạn có thể hiểu sơ sơ về cấu trúc DOM trong website.
Để tối ưu DOM bạn cần hạn chế lồng các phần tử vào nhau nếu không cần thiết.
Ví dụ như trên, thẻ <h1>
hoàn toàn có thể nằm riêng mà không cần lồng vào trong <section>
Trong Oxygen khi bạn thêm 1 section nó sẽ tự tạo thêm 1 container bên trong và bạn không thể thao tác gì với phần tử container bên trong đó. Điều này vô hình chung làm thừa ra 1 nút DOM nếu như phần tử đó không làm kiểu Full-width.
Để khắc phục vấn đề này, chúng ta có thể tạo riêng từng loại từ Section → Container bằng công cụ có sẵn trong Oxygen và lưu nó thành "Re-usable part" để dùng mọi lúc , mọi nơi.
Tạo Section:
Tạo Container:
"ct-section-inner-wrap"
.width = calc(100% - 20px)
. 20px chính là phần padding chia đều 2 bên trái phải, mỗi bên 10px.Hoặc bạn có thể Import mã json dưới này để tham khảo mẫu mình đã tạo.
Section:
{"component":{"id":14,"name":"ct_div_block","options":{"ct_id":14,"ct_parent":0,"selector":"div_block-14-4205","original":{"tag":"section","margin-top":"50","margin-bottom":"50"},"nicename":"ARTRU-section","activeselector":false},"depth":1},"classes":{}}
Container:
{"component":{"id":16,"name":"ct_div_block","options":{"ct_id":16,"ct_parent":0,"selector":"div_block-16-4205","original":{},"nicename":"ARTRU-container","classes":["ct-section-inner-wrap"],"activeselector":false},"depth":1},"classes":{"ct-section-inner-wrap":{"key":"ct-section-inner-wrap","original":{"width-unit":" ","width":"calc(100% - 20px)"}}}}
Bài Viết Liên Quan