Ngày phát hành: 14 tháng 5 năm 2025
Compression Dictionary Transport (Chuyển từ điển nén) là một tiêu chuẩn mới cho phép chúng tôi nén nội dung lặp lại trên các yêu cầu và được phát hành trong Chrome 130 vào cuối năm 2024. Google Tìm kiếm đã áp dụng công nghệ mới này và nhận thấy những điểm cải tiến đáng kể.
Cơ hội
Có rất nhiều nội dung trùng lặp trong các trang web mà chúng tôi truy cập. Nhiều trang trên cùng một trang web bao gồm phần lớn cùng một mã, cho dù đó là HTML, CSS hay JavaScript, chỉ có nội dung giữa tất cả mã này thay đổi. Mặc dù mỗi kết quả là một tổ hợp độc đáo của hàng trăm tính năng, tạo ra nội dung hoàn toàn độc đáo, nhưng vẫn có nhiều điểm chung trong mã được gửi đến trình duyệt để tạo ra các kết quả đó.
Về mặt hình ảnh, hầu hết các trang kết quả trên Tìm kiếm đều tương tự nhau bất kể cụm từ tìm kiếm được nhập là gì: Ở đầu trang, chúng ta có biểu trưng Google, thanh tìm kiếm, một số chế độ điều khiển. Ở giữa, chúng ta có một số thẻ cho loại nội dung tìm kiếm, sau đó là danh sách kết quả tìm kiếm ở bên trái, xen kẽ với nhiều tiện ích để giúp người dùng, và bối cảnh bổ sung ở bên phải với các bảng "giới thiệu":

Cuối cùng, ở dưới cùng, chúng ta có các tuỳ chọn phân trang và chân trang tiêu chuẩn. Đây chỉ là những gì bạn nhìn thấy được. Đằng sau trang này có rất nhiều mã (HTML, CSS và JavaScript) để tạo ra trang này. Phần lớn mã này được đưa trực tiếp vào HTML của trang để tối ưu hoá hiệu suất. Mặc dù điều này giúp tải trang nhanh hơn, nhưng bạn sẽ phải trả giá bằng việc không chia sẻ mã đó giữa các trang kết quả khác nhau, chẳng hạn như tài nguyên được lưu vào bộ nhớ đệm bên ngoài.
Nén trên web
Nén là một công nghệ được sử dụng rộng rãi trên web. Việc nén tài nguyên bằng gzip hoặc các thuật toán mới hơn như Brotli hoặc Zstandard giúp tránh lặp lại trong tệp bằng cách nén không suy hao để đóng gói tất cả thông tin chặt chẽ nhất có thể trên máy chủ trước khi gửi. Sau đó, trình duyệt có thể giải nén các byte đã nén để khôi phục nội dung ban đầu. Đối với hình ảnh, phương thức nén có tổn hao cũng mang lại những lợi ích tương tự bằng cách xoá các byte thừa mà người dùng có thể không nhận thấy sự khác biệt.
Cho đến gần đây, việc nén trên web chỉ giới hạn ở việc nén trong các tài nguyên. Không thể nén trên nhiều tài nguyên và chắc chắn là không thể nén trên nhiều trang. Đây từ lâu đã được coi là một hạn chế mà các kỹ sư web tìm cách khắc phục.
Hãy dùng tính năng Truyền tải từ điển nén!
Truyền tải từ điển nén là một tiêu chuẩn mới cho phép nén trên các tài nguyên bằng cách sử dụng "từ điển" dùng chung cho phép thay thế chuỗi byte phổ biến bằng các tệp tham chiếu từ từ điển dùng chung đó.
Các thuật toán nén hiện đại như Brotli và Zstandard hỗ trợ việc sử dụng từ điển các thuật ngữ phổ biến để nén hiệu quả hơn bằng cách thay thế các thuật ngữ đó bằng một tệp tham chiếu nhỏ hơn đến từ điển. Brotli thậm chí còn đi kèm với một từ điển tích hợp sẵn về các thuật ngữ web phổ biến. Compression Dictionary Transport (Chuyển từ điển nén) dựa trên điều này bằng cách cung cấp các cách để máy chủ và trình duyệt chia sẻ từ điển tuỳ chỉnh.
Từ điển tuỳ chỉnh có thể là một tài nguyên đã được sử dụng trên trang web. Ví dụ: bạn có thể sử dụng app.v1.js
làm từ điển khi tải app.v2.js
xuống để về cơ bản chỉ tải phần chênh lệch xuống (thường được gọi là "nén delta"). Ngoài ra, bạn có thể chỉ định một tài nguyên từ điển riêng bằng thẻ <link rel="compression-dictionary">
(hoặc tiêu đề HTTP Link
tương đương).
Điều này có thể làm giảm đáng kể kích thước tải xuống của các tài nguyên có nhiều nội dung hoặc mã được chia sẻ, chẳng hạn như các trang kết quả Tìm kiếm được đề cập trước đó.
Việc Google Tìm kiếm sử dụng từ điển nén
Nhóm Google Tìm kiếm không ngừng tìm cách cải thiện hiệu suất của Tìm kiếm. Họ là những người sớm sử dụng từ điển nén vì nhận thấy tiềm năng của công nghệ này.
Tìm kiếm sử dụng tính năng nén Brotli dùng chung cho các trang kết quả bằng một tệp từ điển riêng được tạo từ một mẫu đại diện của kết quả tìm kiếm. Quy trình tự động mạnh mẽ đảm bảo từ điển luôn mới mẻ, bắt kịp nội dung SRP thường xuyên thay đổi và được phát hành nhiều lần trong ngày. Bạn có thể sử dụng Công cụ cho nhà phát triển để xem chính xác cách hoạt động của tính năng này.
Khi một ứng dụng tải trang kết quả tìm kiếm lần đầu tiên, máy chủ sẽ cung cấp đường liên kết đến từ điển bằng cách sử dụng tiêu đề HTTP Link:
với loại rel=compression-dictionary
:

Link
trong thẻ MạngNếu ứng dụng hỗ trợ tính năng nén từ điển Brotli nhưng chưa lưu từ điển dùng chung vào bộ nhớ đệm, thì trình duyệt sẽ tải từ điển này xuống trong thời gian rảnh. Phản hồi từ từ điển bao gồm tiêu đề phản hồi Use-As-Dictionary
cho trình duyệt biết những tài nguyên mà trình duyệt có thể sử dụng từ điển này:

Use-As-Dictionary
trong thẻ MạngTừ điển sẽ sử dụng ngữ nghĩa cache-control
chuẩn và sẽ có sẵn cho mọi tài nguyên khớp với các quy tắc được xác định trong tiêu đề đó – trong ví dụ này, các trang bắt đầu bằng /search
.
Đối với các lần tải trang kết quả tìm kiếm trong tương lai, trình duyệt có thể cho máy chủ biết rằng trình duyệt có một từ điển bằng cách sử dụng tiêu đề yêu cầu HTTP Available-Dictionary
. Khi tải lại trang, bạn sẽ thấy kết quả như sau:

Available-Dictionary
trong thẻ MạngKhi bật và lọc hộp đánh dấu Preserve log (Giữ lại nhật ký), chúng ta có thể so sánh hai phản hồi:

Trong ví dụ này, yêu cầu đầu tiên là phản hồi đầy đủ 107 kB và sử dụng phương thức nén Brotli (br
), trong khi yêu cầu tải lại thứ hai có kích thước gần một nửa ở mức 60 kB và sử dụng phương thức nén Brotli nén theo từ điển (dcb
), giúp thời gian tải xuống nhanh hơn.
Trong Chrome, bạn có thể xem trang chrome://net-internals/#sharedDictionary
để xem và xoá Từ điển dùng chung nếu muốn lặp lại ví dụ này từ đầu.

#sharedDictionary
Net-InternalsKết quả
Thay đổi này được triển khai cho người dùng Tìm kiếm vào mùa xuân năm 2025, ban đầu là cho người dùng Chrome. Điều này làm giảm 23% kích thước trung bình của tải trọng HTML trên tất cả người dùng Chrome so với phương thức nén Brotli tiêu chuẩn. Mức trung bình tổng thể này bao gồm cả kết quả không được nén bằng từ điển (ví dụ: người dùng lần đầu không có từ điển) và kết quả tìm kiếm được nén bằng từ điển. Đối với kết quả được nén bằng từ điển, mức tiết kiệm còn lớn hơn nữa – như chúng ta đã thấy với mức cải thiện gần 50% trong ví dụ trước.
Nhờ đó, điểm số Thời gian hiển thị nội dung lớn nhất (LCP) đã cải thiện tổng thể 1,7% và lên đến 9% trên các mạng có độ trễ cao. Mức tăng này có vẻ nhỏ, nhưng Google Tìm kiếm là một trang web được tối ưu hoá tối đa, vì vậy, mức tăng này là rất lớn. Các trang web khác có thể thấy mức độ cải thiện còn lớn hơn nữa nhờ công nghệ này.
Hãy thử trên trang web của bạn!
Bạn hiện có thể sử dụng tính năng Truyền tải từ điển nén trong tất cả trình duyệt dựa trên Chromium (Chrome, Edge, Opera, v.v.). Đây là một tính năng nâng cao dần dần mà các trình duyệt không hỗ trợ sẽ bỏ qua, nhưng khi có nhiều trình duyệt hỗ trợ tính năng này hơn, thì các trình duyệt đó cũng có thể hưởng lợi.
Những thách thức mà công nghệ này giải quyết không chỉ dành riêng cho Google Tìm kiếm. Nhiều trang web có thể hưởng lợi từ tính năng Truyền tải từ điển nén, cho dù sử dụng một từ điển riêng biệt như Tìm kiếm hay sử dụng một tài nguyên hiện có làm từ điển (chẳng hạn như phiên bản trước của ứng dụng khi triển khai phiên bản mới).
Hãy xem hướng dẫn trên MDN để biết thêm thông tin chi tiết về cách hoạt động của công nghệ này và cách triển khai công nghệ này trên trang web của bạn.
Việc này đòi hỏi một số thiết lập trên máy chủ hoặc quy trình xây dựng để tạo tài nguyên nén dựa trên từ điển và phân phát tài nguyên đó cho phù hợp – nhưng kết quả có thể rất ấn tượng về hiệu suất!