Thứ sáu, 12/06/2015 | 00:00 GMT+7

Cách cài đặt và cấu hình mod_deflate trên CentOS 7

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 CentOS 7. Việc cài đặt và cấu hình 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 CentOS .

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 trên CentOS 7 .

Cài đặt

Mod_deflate được bao gồm và kích hoạt trong cài đặt Apache mặc định trên CentOS 7. Để 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

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:

  1. Đảm bảo rằng file module đã được cài đặt. Tệp này là một phần của gói httpd 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 /etc/httpd/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ư 755.
  2. Kiểm tra xem module đã được tải chưa. Mở file cấu hình module cơ sở Apache /etc/httpd/conf.modules.d/00-base.conf và đảm bảo dòng này hiện diện và không bị comment :
LoadModule deflate_module 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.

Để cấu hình mod_deflate, hãy tạo file cấu hình mới /etc/httpd/conf.d/mod_deflate.conf với mã mẫu:

/etc/httpd/conf.d/mod_deflate.conf
<filesMatch "\.(js|html|css)$">     SetOutputFilter DEFLATE </filesMatch> 

Đoạn mã trên nghĩa là khi một file phù hợp với các phần mở rộng .js , .html hoặc .css nó sẽ được nén (giảm phát) thông qua chỉ thị Apache SetOutputFilter tiêu chuẩn. Bạn có thể thêm các phần mở rộng file văn bản tương tự khác được tìm thấy trên trang web của bạn , chẳng hạn như .txt .

Lưu ý: Bạn có thể đặt mã trên trong file cấu hình chính /etc/httpd/conf/httpd.conf . Tuy nhiên, tốt hơn nên tách các phần cấu hình cụ thể như vậy trong một file khác. Với mục đích này trong CentOS 7, các file nào có phần mở rộng .conf được đặt trong folder /etc/httpd/conf.d/ sẽ tự động được tải nhờ chỉ thị IncludeOptional conf.d/*.conf ở cuối file cấu hình Apache chính .

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, 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ấu hình các giá trị thấp hơn trong file cấu hình /etc/httpd/conf.d/mod_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 CentOS 7 Server thì bạn có thể cài đặt nó bằng lệnh sudo yum install -y 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 CentOS 7. 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.


Tags:

Các tin liên quan

Cách hạn chế tài nguyên bằng cách sử dụng nhóm trên CentOS 6
2015-06-10
Cách phân tích chỉ số hệ thống với InfluxDB trên CentOS 7
2015-06-04
Cách quản lý / vv với Kiểm soát phiên bản bằng Etckeeper trên CentOS 7
2015-04-20
Cách cài đặt WordPress với OpenLiteSpeed trên CentOS 7
2015-04-16
Cách backup server CentOS 7 bằng Bacula
2015-04-13
Cách sử dụng MariaDB với Ứng dụng Django của bạn trên CentOS 7
2015-03-25
Cách thiết lập LEPP hai node trên CentOS 7
2015-03-19
Cách cài đặt Ruby on Rails với rbenv trên CentOS 7
2015-03-16
Cách cài đặt MediaWiki trên CentOS 7
2015-03-12
Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên CentOS 7
2015-03-10