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:
-  Đảm bảo rằng file  module  đã được cài đặt. Tệp này là một phần của gói httpdcố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.sonên có các quyền có thể đọc được trên thế giới chẳng hạn như 755.
-  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.confvà đả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:
<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ịDeflateMemLevelvớ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.
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 62015-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
 

