Bài viết mới nhất

Tổng 2300 bài
Lập trình 22/09/2026 6 phút

DEFLATE, gzip và zlib: mổ xẻ thuật toán nén phổ biến nhất thế giới

gzip có mặt ở khắp nơi — HTTP, PNG, file .gz — và bên trong nó là DEFLATE: đúng hai thứ ta vừa học, LZ77 chồng lên Huffman. Bài này mổ header gzip thật byte-by-byte (magic 1f 8b, method 08, CRC32, kích thước gốc), so ba lớp vỏ DEFLATE raw / zlib / gzip khác nhau đúng 6 và 18 byte, và chứng minh sức mạnh nằm ở DEFLATE chứ không phải lớp vỏ: gzip level 0 làm dữ liệu to hơn, level 6 nén 153 lần.

Lập trình 22/09/2026 6 phút

Mức nén gzip -1 tới -9: vì sao mặc định -9 thường là lãng phí

Ai cũng từng gõ gzip -9 nghĩ 'nén tối đa'. Nhưng bài này đo thật trên 11MB log: từ gzip -6 lên -9 chỉ nhỏ hơn 7% mà chậm gấp 3.5 lần; zstd còn kịch tính hơn — từ -9 lên -19 nhỏ hơn 17% nhưng chậm gấp 36 lần. Đây là luật lợi ích giảm dần, và cách chọn mức nén theo cách dùng thay vì mặc định lấy mức cao nhất.

Lập trình 22/09/2026 7 phút

gzip vs bzip2 vs xz vs zstd: bốn thuật toán nén, đo thật để biết chọn cái nào

Bốn công cụ nén phổ biến, bốn triết lý khác nhau. Bài này nén cùng một file log 25MB bằng cả bốn và đo đủ bốn số: kích thước, tỉ lệ, thời gian nén, thời gian giải nén. Kết quả thật có bất ngờ: zstd -3 nén trong 61ms còn xz mất 7 giây; zstd giải nén 12ms bất kể mức nén; và bzip2 nén chặt nhất trên log này (13.3x) vì BWT hợp dữ liệu lặp. Khi nào chọn cái nào.

Lập trình 22/09/2026 7 phút

zstd và từ điển: nén nghìn bản ghi JSON nhỏ từ 1.3x lên 4.4x

Nén từng bản ghi nhỏ riêng lẻ (cache entry, message, log record ~200 byte) cho tỉ lệ tệ hại vì mỗi lần nén bắt đầu từ số 0. Bài này đo thật trên 3000 JSON nhỏ: nén riêng không từ điển chỉ được 1.3x, nhưng huấn luyện một từ điển 8KB bằng zstd --train rồi nén với nó đạt 4.4x — cải thiện 3.5 lần. Vì sao, và khi nào từ điển là công cụ đúng.

Lập trình 22/09/2026 6 phút

Nén phụ thuộc dữ liệu: vì sao cùng gzip nén mã nguồn 292x mà nén ảnh 1x

Không có 'tỉ lệ nén của gzip' — tỉ lệ phụ thuộc hoàn toàn vào dữ liệu, cụ thể là entropy của nó. Bài này đo thật cùng gzip trên nhiều loại 4MB: mã nguồn lặp nhiều nén 292 lần, JSON 15 lần, text 5 lần, nhưng số ngẫu nhiên và dữ liệu đã nén chỉ 1 lần (thậm chí to hơn). Và vì sao bạn không bao giờ nên gzip một file .jpg, .zip hay .mp4.

Lập trình 22/09/2026 6 phút

Nén trong HTTP: vì sao trang web tải nhanh gấp 10 lần mà bạn không thấy gì

Mỗi lần trình duyệt tải một trang, nó và server âm thầm thương lượng nén qua header Accept-Encoding và Content-Encoding. Bài này đo thật trên coffeecode.vn: trang chủ 245KB tải về chỉ còn 25KB nhờ gzip (nhỏ 9.8 lần). Và so gzip với brotli trên chính HTML đó — brotli nhỏ hơn gzip 24%. Cơ chế thương lượng, vì sao Vary: Accept-Encoding là bắt buộc, và chỉ nén text.