Tính năng này chỉ hoạt động đối với các tệp HTML/XML ?
Không: nó thường được sử dụng cho các tệp CSS và JS - vì đó là thứ lớn nhất mà các trang web được tạo ra (trừ hình ảnh), vì các khung công tác JS và các ứng dụng JS đầy đủ, nó đại diện cho một lợi ích to lớn!
Thực ra, mọi định dạng dựa trên văn bản đều có thể được nén khá tốt (ngược lại, hình ảnh không thể, chẳng hạn như chúng thường được nén); đôi khi, dữ liệu JSON trở về từ Ajax yêu cầu được nén quá - đó là dữ liệu văn bản, rốt cuộc cả ;-)
phép nói rằng PHP tập tin/Perl tôi tạo dữ liệu một số dấu phẩy đơn giản phân, và gửi đến trình duyệt , nó sẽ được được mã hóa theo mặc định?
Đó là một vấn đề cấu hình: nếu bạn đã cấu hình máy chủ của bạn để nén mà loại nội dung, nó sẽ có thể được nén :-)
(Nếu trình duyệt cho biết họ chấp nhận dữ liệu gzip-mã hóa)
Dưới đây là một mẫu cấu hình cho Apache 2 (sử dụng mod_deflate) mà tôi sử dụng trên blog của tôi:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/xml
</IfModule>
ở đây, tôi muốn html/xml/css/JS te được nén.
Và đây là điều tương tự, cộng/trừ một vài tùy chọn cấu hình tôi sử dụng một lần, dưới Apache 1 (mod_gzip):
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_minimum_file_size 256
mod_gzip_maximum_file_size 500000
mod_gzip_dechunk Yes
mod_gzip_item_include file \.css$
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.txt$
mod_gzip_item_include file \.js$
mod_gzip_item_include mime text/html
mod_gzip_item_exclude mime ^image/
</IfModule>
Những điều có thể được nhận thấy ở đây là rằng tôi không muốn quá nhỏ (tăng sẽ không được khá quan trọng) hoặc quá lớn (sẽ ăn quá nhiều CPU để nén) các tập tin được nén; và tôi muốn các tệp css/html/txt/js được nén, nhưng không phải hình ảnh.
Nếu bạn muốn dữ liệu được phân cách bằng dấu phẩy được nén theo cùng một cách, bạn sẽ phải thêm loại nội dung hoặc mở rộng cấu hình của máy chủ web, để kích hoạt nén gzip cho máy chủ.
Có cách nào để kiểm tra điều này không?
Đối với bất kỳ nội dung nào được trả lại trực tiếp cho trình duyệt, tiện ích mở rộng của Firefox Firebug hoặc LiveHTTPHeaders là phải có.
Đối với nội dung không trải qua cách giao tiếp chuẩn của trình duyệt, có thể khó hơn; cuối cùng, bạn có thể phải kết thúc bằng cách sử dụng một cái gì đó như Wireshark để "ngửi" những gì đang thực sự đi qua các đường ống ... Chúc may mắn với điều đó!
gì về các nền tảng như Silverlight hoặc Flash, khi họ tải về dữ liệu như vậy nó sẽ được nén/giải nén bởi trình duyệt/thời gian chạy tự động?
Để trả lời câu hỏi của bạn về Silverlight và Flash, nếu họ gửi tiêu đề Chấp nhận cho biết họ hỗ trợ nội dung nén, Apache sẽ sử dụng mod_deflate hoặc mod_gzip. Nếu họ không hỗ trợ nén, họ sẽ không gửi tiêu đề. Nó sẽ “chỉ hoạt động.” - Nate
Chỉ cần làm rõ cho độc giả trong tương lai: Bất kỳ loại HTTP dữ liệu có thể được nén, thời gian. Nó chỉ là một ý tưởng tồi cho dữ liệu đã được nén, chẳng hạn như hình ảnh. –
@Sean> chính xác; Tôi tự hỏi liệu có ai lấy được thứ gì bằng cách nén lại hình ảnh, btw… Không bao giờ dám kiểm tra nó ^^ (Tôi đoán sự tăng lên sẽ thực sự tối giản, nếu không phải là null, và nó sẽ ăn một số CPU gần như không có gì ...) –
Vâng, tôi đã thấy hình ảnh BMP không nén được phục vụ ... –