Cách cài đặt và cấu hình mod_deflate trên Ubuntu 14.04
Mod_deflate là một module Apache cho phép nén kết quả từ web server của bạn trước khi được gửi đến client . Khi kích thước nội dung trang web được nén, kích thước của nó sẽ nhỏ hơn và khách hàng có thể download nhanh hơn. Điều này không chỉ có giá trị đối với khách hàng có băng thông thấp hơn, mà còn được các công cụ tìm kiếm xem xét khi đánh giá hiệu suất trang web và xếp hạng trang của nó.Ngoài việc nén nội dung, mod_deflate cũng được dùng cho mục đích extract . Kỹ thuật này có thể áp dụng nếu bạn sử dụng Apache làm Reverse Proxy và bạn muốn xử lý thêm nội dung đi qua proxy. Tuy nhiên, kỹ thuật này có một sử dụng rất hạn chế. Ta sẽ giữ trọng tâm của bài viết về việc sử dụng mod_deflate để nén.
Yêu cầu
Hướng dẫn này đã được thử nghiệm trên Ubuntu 14.04. Đối với CentOS 7, vui lòng xem hướng dẫn này . Cấu hình và cài đặt module không phụ thuộc vào hệ điều hành hoặc version hệ điều hành, nhưng vị trí của file cấu hình có thể khác nhau trên hệ điều hành khác nhau và version của chúng.
Nó cũng giả định bạn đang chạy Apache 2.4.0 trở lên. Để cài đặt Apache, hãy làm theo Bước # 1 của bài viết Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 14.04 .
Tất cả các lệnh trong hướng dẫn này phải được chạy với quyền user không phải root. Nếu cần có quyền truy cập root cho lệnh, nó sẽ được đặt trước sudo
. Nếu bạn chưa cài đặt , hãy làm theo hướng dẫn này: Cài đặt server ban đầu với Ubuntu 14.04 .
Cài đặt
Mod_deflate được bao gồm và kích hoạt trong cài đặt Apache mặc định trên Ubuntu 14.04. Để xác nhận apachectl
chạy này, Giao diện điều khiển server Apache và lọc kết quả bằng grep
cho từ khóa deflate
như sau:
- apachectl -t -D DUMP_MODULES |grep deflate
Lưu ý: Nếu apachectl
không có trong đường dẫn của bạn, bạn có thể phải sử dụng đường dẫn đầy đủ đến lệnh: /usr/sbin/apachectl
.
Bạn sẽ thấy deflate_module (shared)
nếu mod_deflate được cài đặt và kích hoạt. Nếu bạn không thấy thông báo này, hãy làm theo các bước khắc phục sự cố sau:
- Đảm bảo rằng file module đã được cài đặt. Tệp này là một phần của gói
apache2
cốt lõi mà bạn nên đã cài đặt theo các yêu cầu đã đề cập trước đó. Theo mặc định, nó được tìm thấy trong/usr/lib/apache2/modules/mod_deflate.so
. Ngoài ra, web server sẽ có thể mở file này. Vì mục đích này,mod_deflate.so
nên có các quyền có thể đọc được trên thế giới chẳng hạn như 644. - Kiểm tra xem module đã được tải chưa. Mở file cấu hình module
/etc/apache2/mods-enabled/deflate.load
, đây là một softlink tới/etc/apache2/mods-available/deflate.load
và đảm bảo dòng này hiện diện và không bị comment :
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
Lưu ý: Đừng quên khởi động lại Apache nếu bạn phải thay đổi cấu hình Apache. Lệnh khởi động lại là sudo apachectl restart
.
Cấu hình
Để bắt đầu sử dụng mod_deflate, bạn phải chỉ định loại file nào nên được nén. Mặt khác, các định dạng văn bản thuần túy có thể được giảm kích thước đáng kể bằng cách nén, và đó là lý do tại sao áp dụng nó vào các file HTML, CSS hoặc JavaScript là rất hợp lý. Mặt khác, nhiều định dạng đa phương tiện như Flash và hình ảnh đã có sẵn tính năng nén, và việc nén bổ sung sẽ vô ích.
Ngay từ đầu, bạn có thể sử dụng cấu hình mặc định trong file /etc/apache2/mods-enabled/deflate.conf
, một softlink đến /etc/apache2/mods-available/deflate.conf
, đó là:
<IfModule mod_deflate.c> <IfModule mod_filter.c> # these are known to be safe with MSIE 6 AddOutputFilterByType DEFLATE text/html text/plain text/xml # everything else may cause problems with MSIE 6 AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/xml </IfModule> </IfModule>
Đoạn mã trên nghĩa là khi một file phù hợp với các phần mở rộng, bất kỳ phần mở rộng file văn bản phổ biến nào như .html
, .txt
, .xml
, .css
, .js
, v.v. thì nó sẽ được nén bởi hành động deflate của mod_deflate. Nếu bạn không chắc chắn về cách các phần mở rộng được ánh xạ theo kiểu mime, hãy kiểm tra file /etc/mime.types
. Bạn có thể cần thêm nhiều tiện ích mở rộng cụ thể cho trang web của bạn .
Lưu ý: Trong Ubuntu, cấu hình Apache được tổ chức trực quan trong nhiều file . Ngoài ra, các file cấu hình thường không được kích hoạt. Ví dụ: các file cấu hình module nằm trong folder /etc/apache2/mods-available/
, ví dụ /etc/apache2/mods-available/deflate.conf
. Tệp cấu hình module chỉ được bật khi một softlink với nó được tạo trong folder /etc/apache2/mods-enabled/
chẳng hạn như /etc/apache2/mods-enabled/deflate.conf
.
Hơn nữa, mod_deflate có một số tùy chọn cấu hình quan trọng của riêng nó:
-
DeflateCompressionLevel
- Mức nén được áp dụng. Theo mặc định, mức này là 9, mức nén cao nhất. 1 là mức nén ít nhất. Nén cao hơn sẽ tạo ra kết quả nhỏ nhất với mức giá sử dụng CPU server cao hơn. -
DeflateMemLevel
- Dung lượng bộ nhớ zlib mà thư viện nén có thể sử dụng. Giá trị mặc định là 9 cũng là giá trị cao nhất. Để tính toán chính xác bộ nhớ được phép, bạn nên nhân giá trịDeflateMemLevel
với 16K. -
DeflateWindowSize
- Kích thước cửa sổ nén. Theo mặc định, đó là giá trị cao nhất có thể là 15. Số cao hơn nghĩa là mức độ nén cao hơn, với giá của nhiều tài nguyên server hơn.
Trong hầu hết các trường hợp, bạn có thể để mặc định các giá trị trên. Tuy nhiên, nếu bạn nghi ngờ hiệu suất server của bạn đã xấu đi đáng kể sau khi sử dụng mod_deflate, bạn có thể cấu hình các giá trị thấp hơn trong file cấu hình /etc/apache2/mods-enabled/deflate.conf
như sau:
DeflateCompressionLevel 1
Ở trên sẽ giảm mức độ nén, dẫn đến làm cho các file lớn hơn. Tuy nhiên, mod_deflate sẽ sử dụng ít CPU hơn theo cách này. Đảm bảo khởi động lại Apache nếu bạn quyết định áp dụng bất kỳ thay đổi nào như vậy.
Thử nghiệm
Có nhiều cách khác nhau để kiểm tra mod_deflate nhưng dễ nhất là sử dụng wget, trình download mạng không tương tác. Nếu bạn chưa có nó trên Ubuntu 14.04 Server thì bạn có thể cài đặt nó bằng lệnh sudo apt-get install wget
.
Để kiểm tra, bạn cần một file văn bản có dung lượng ít nhất vài trăm KB, file này sẽ trở nên nhỏ hơn khi nén. Nếu bạn không có file như vậy trong tay, bạn có thể download JQuery , một thư viện JavaScript phổ biến và tải nó lên trang web . Nếu bạn không chắc chắn nơi đặt file , bạn có thể chỉ cần tải nó lên root tài liệu mặc định của Apache là /var/www/html/
trong Ubuntu 14.04. Do đó, file sẽ có sẵn tại folder root của trang web mặc định của bạn.
Lưu ý: Để mod_deflate nén kết quả , ứng dụng client (thường là trình duyệt) phải hỗ trợ nén. Nếu client không hỗ trợ nén, file sẽ được gửi như hiện tại.
Sau khi file thử nghiệm mẫu được tải lên trang web , hãy tải file đó xuống bằng wget
. Bạn có thể thực hiện kiểm tra này từ máy local của bạn hoặc từ Server. như thế này:
- wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js
Trong ví dụ trên, bạn đang download file jquery-1.11.3.js
từ server Apache của bạn . Để tận dụng nén ta vượt qua thêm wget
luận tiêu đề Accept-Encoding: gzip
.
Khi download theo cách trên, file jquery-1.11.3.js
phải là 83KB. Trên thực tế, đây không phải là file JavaScript root hoàn toàn giống với file JavaScript root và nó phải được client extract bổ sung, gây ra một số chi phí cho phía client . Tuy nhiên, kích thước được truyền qua mạng sẽ chỉ là 83KB, nhỏ hơn ba lần so với file root (278K).
Bạn có thể xác nhận tính trên đầu bằng cách kiểm tra kích thước của file đã tải về bằng lệnh Linux niêm yết nội dung folder ls
như thế này:
- ls -lah jquery-1.11.3.js
- -rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js
Sau đó, bạn có thể so sánh lại kết quả với file root trên trang web của bạn bằng ls
:
- ls -lah /var/www/html/jquery-1.11.3.js
- -rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js
Kết luận
Như bạn đã thấy từ bài viết này và ví dụ thực tế với thư viện JQuery, Mod_deflate có thể giúp bạn giảm đáng kể nhu cầu băng thông cho trang web của bạn . Để tiếp tục tối ưu hóa trang web , hãy đọc về bộ nhớ đệm nội dung Apache , đây là bước hợp lý tiếp theo sau khi bật mod_deflate.
Các tin liên quan
Cách cài đặt MongoDB trên Ubuntu 14.042015-06-15
Cách cài đặt và sử dụng ArangoDB trên Ubuntu 14.04
2015-06-12
Cách cài đặt Lita Chat Bot cho IRC trên Ubuntu 14.04
2015-06-10
Cách cài đặt và cấu hình Ansible trên Ubuntu 14.04
2015-06-05
Triển khai ứng dụng Rails trên Ubuntu 14.04 với Capistrano, Nginx và Puma
2015-06-03
Cách xây dựng các SPA (Ứng dụng một trang) bằng NodeJS, SailsJS và DustJS trong Ubuntu 14.04
2015-05-27
Cách thiết lập môi trường puppet masterless trên Ubuntu 14.04
2015-04-29
Cách backup server Ubuntu 14.04 bằng Bacula
2015-04-17
Cách cài đặt WordPress với OpenLiteSpeed trên Ubuntu 14.04
2015-04-16
Cách triển khai Wordpress với Shipyard trên Ubuntu 14.04
2015-04-14