2012-04-21 13 views
28

Ai đó có thể cho tôi biết sự khác biệt trong các kịch bản sau đây về hiệu suất và nén của CPU không?mod_deflate vs mod_gzip

<ifModule mod_gzip.c> 
mod_gzip_on Yes 
mod_gzip_dechunk Yes 
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ 
mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* 
mod_gzip_item_include mime ^application/x-javascript.* 
mod_gzip_item_exclude mime ^image/.* 
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</ifModule> 


<ifModule mod_deflate.c> 
<filesMatch "\.(js|css)$"> SetOutputFilter DEFLATE </filesMatch> 
</ifModule> 
+0

bản sao có thể có của [Tại sao sử dụng giảm phát thay vì gzip cho các tệp văn bản được Apache phân phối?] (Http://stackoverflow.com/questions/388595/why-use-deflate-instead-of-gzip-for-text- file-served-by-apache) – KingCrunch

+0

có thể trùng lặp của [mod \ _deflate hoặc mod \ _gzip, nên được sử dụng?] (http://stackoverflow.com/questions/3173147/mod-deflate-or-mod-gzip- cái nào nên được sử dụng) –

Trả lời

6

Hầu hết các thuật toán nén khi được áp dụng cho tệp văn bản thuần có thể giảm kích thước 70% trở lên tùy thuộc vào nội dung trong tệp. Khi sử dụng thuật toán nén, sự khác biệt giữa mức độ nén tiêu chuẩn và mức tối đa là nhỏ, đặc biệt khi bạn xem xét thời gian CPU bổ sung cần thiết để xử lý các lần nén bổ sung này. Điều này khá quan trọng khi tự động nén nội dung web. Hầu hết các kỹ thuật nén nội dung phần mềm sử dụng mức nén 6 (trong số 9 cấp độ) để bảo tồn chu kỳ CPU. Sự khác biệt về kích thước tệp giữa cấp 6 và cấp 9 thường nhỏ đến mức không đáng để thêm thời gian.

Đối với các tệp được xác định là văn bản /. * Loại MIME, có thể áp dụng nén cho tệp trước khi đặt nó trên dây. Điều này đồng thời làm giảm số lượng byte được chuyển và cải thiện hiệu suất. Thử nghiệm cũng cho thấy rằng các tệp Microsoft Office và PostScipt có thể được mã hóa GZIP để truyền tải bởi các mô-đun nén.

Một số loại MIME quan trọng không thể mã hóa GZIP là các tệp JavaScript bên ngoài, tệp PDF và tệp hình ảnh. Vấn đề với các tệp Javascript chủ yếu là do lỗi trong phần mềm trình duyệt, vì các tệp này thực sự là tệp văn bản và hiệu suất tổng thể sẽ được hưởng lợi bằng cách nén để truyền tải. Các tệp PDF và hình ảnh đã được nén và cố gắng nén chúng lại một lần nữa đơn giản là làm cho chúng lớn hơn và dẫn đến các vấn đề hiển thị tiềm năng với trình duyệt.

Trước khi gửi tệp nén cho khách hàng, điều quan trọng là máy chủ đảm bảo máy khách nhận dữ liệu chính xác hiểu và hiển thị định dạng nén. Các trình duyệt hiểu nội dung được nén gửi một biến thể của các tiêu đề yêu cầu khách hàng sau đây:

Accept-encoding: gzip 

Accept-encoding: gzip, deflate 

Các trình duyệt chính hiện tại bao gồm một số biến thể của thông báo này với mọi yêu cầu mà chúng gửi. Nếu máy chủ nhìn thấy tiêu đề và lựa chọn để cung cấp nội dung nén, nó nên phản ứng với các tiêu đề phản ứng máy chủ:

Để biết thêm thông tin, xem bài viết này: http://www.linuxjournal.com/article/6802

+7

Câu trả lời này cung cấp nhiều thông tin hữu ích nhưng không giải quyết được câu hỏi nào cả: Đó là lựa chọn tốt hơn và tại sao? –

+0

Công việc sao chép và dán này thậm chí không cố gắng trả lời câu hỏi thực tế. Tôi không biết tại sao nó được nhận tích cực. – thomasrutter

9

Tôi đoán bạn đang hỏi về sự khác nhau giữa các hai, và không phải về nén nói chung. Trong trường hợp đó, tôi khuyên bạn nên sử dụng mod_deflate dựa trên zlib dự án vẫn còn hoạt động. BTW, bài cũ (6-7 tuổi) so sánh hai, không liên quan nữa.

2

Bật mod_deflate và mod_gzip về cơ bản hoàn thành điều tương tự, cả hai đều nén tệp web của bạn trước khi chúng được gửi tới khách truy cập trang web của bạn.

Có sự khác biệt giữa hai mặc dù; mod_deflate đôi khi có thể có tỷ lệ phần trăm nén tốt hơn là mod_gzip. Một lý do khác bạn nên chọn mod_deflate là vì nó được hỗ trợ tốt hơn như mod_gzip giúp dễ dàng định cấu hình hơn vì nó được ghi lại tốt hơn. Thông tin thêm có thể được tìm thấy here.

-3

IMHO Bạn nên tránh sử dụng mod_deflate cho các tệp tĩnh, thay vào đó phục vụ các tệp được nén trước thông qua mod_rewrite với nén tốt nhất hiện có (7zip đã tạo gzip AFAIK). Apache không lưu vào bộ nhớ đệm các tệp tĩnh được nén.

Đối với tệp động: phụ thuộc vào băng thông có sẵn - mod_deflate cần nhiều sức mạnh xử lý, nhưng có thể sử dụng nếu máy chủ của bạn có khả năng làm tràn mạng của bạn.

+0

-1 Câu trả lời của bạn là dựa trên ý kiến ​​và không có gì có thể định lượng để hỗ trợ ý kiến ​​đó. Bạn sẽ cần phải cân nhắc những ưu và khuyết điểm tùy thuộc vào trường hợp sử dụng của bạn. – Precastic

+0

Tôi nghĩ rằng bình luận của tôi nói rõ ràng mọi thứ. Apache có thể phục vụ khoảng 10 lần nhiều tệp khi phục vụ các tệp nén tĩnh. Và bạn có thể tiết kiệm khoảng 10% băng thông như 7zip tạo ra các tệp zip nhỏ hơn sau đó gzip. Bạn sẽ có một thời gian phản ứng tốt hơn một chút cũng như không có gzipping. Và bạn đang lãng phí tài nguyên để nén các tệp tĩnh một lần nữa. Mod_deflate tổng thể là một mô-đun tốt, nhưng chỉ sử dụng cho các tệp động. – azazil

3

mod_gzip và mod_deflate là hai mô-đun thay thế để thêm nén gzip vào Apache. mod_deflate là hiện đại hơn và được giới thiệu một ngày nay và được phân phối với Apache.

Đừng để bị lừa bởi các tên khi nghĩ rằng chúng sử dụng các sơ đồ nén khác nhau. Cả hai đều sử dụng gzip (là một trình bao bọc xung quanh định dạng nén DEFLATE). Cái sau chỉ được gọi là mod_deflate vì tên mod_gzip đã được lấy. Cả hai đều sẽ đạt được mức độ nén tương tự về cơ bản với các cài đặt tương đương.

Chúng có cấu hình khác nhau, vì vậy bạn cần tìm tài liệu cho tài liệu cụ thể bạn đang sử dụng.

+0

Sau một vài năm và một số trò chuyện, cuối cùng ai đó đăng một câu trả lời thực tế cho OP. – MarsAndBack