05/10/2018, 23:55

Tăng tốc website với bật nén Gzip

Khi bạn truy cập vào site của bạn, một request sẽ được gửi tới server để chuyển file xuống. Những file này càng lớn, càng mất nhiều thời gian để tải. Bằng cách nén trang web của bạn và CSS trước khi gửi chúng qua cho trình duyệt sẽ giảm thời gian tải xuống đáng kể vì files sẽ nhỏ hơn.

Tóm lại, gzip tìm những chuỗi tương tự nhau trong file text và thay thế những chuỗi đó tạm thời, kết quả là sẽ giúp file nhỏ hơn. Gzip compression rất có ích của cho môi trường web vì HTML, CSS files sử dụng rất nhiều chữ và khoảng trống. Vì vậy kết quả cuối cùng sau khi gzip nén file, kích thước của trang và CSS có thể giảm tới 60-70%.

QUAN TRỌNG! Gzip tăng tốc độ của site của bạn, nhưng bù lại nó dùng nhiều CPU hơn. Trước khi kích hoạt nó, hãy chắc rằng tài nguyên CPU ổn định.

Bạn cần gì?

Trước khi bắt đầu bạn cần chuẩn bị:

  • Truy cập vào file .htaccess
  • Truy cập cPanel (optional)

Bước 1 — Kích hoạt nén bằng gzip

Bạn có thể kích hoạt gzip trên website của bạn bằng cách dùng mod_gzip hoặc mod_deflate. Nén bằng mod_deflate được khuyên dùng vì thuật toán chuyển đổi tốt hơn và module của nó tương thích cao hơn với phiên bản mới của apache. Thông tin chi tiết hơn về 2 phương pháp này có thể được tìm hiểu thêm tại đây Linux Journal article.

Cách 1. Sửa file .htaccess

Gzip compression bằng mod_deflate (khuyên dùng) có thể được kích hoạt bằng cách thêm dòng code sau vào file .htaccess của bạn

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml 
  AddOutputFilterByType DEFLATE application/x-font  
  AddOutputFilterByType DEFLATE application/x-font-truetype  
  AddOutputFilterByType DEFLATE application/x-font-ttf  
  AddOutputFilterByType DEFLATE application/x-font-otf 
  AddOutputFilterByType DEFLATE application/x-font-opentype 
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE font/ttf 
  AddOutputFilterByType DEFLATE font/otf 
  AddOutputFilterByType DEFLATE font/opentype
# For Older Browsers Which Can't Handle Compression
  BrowserMatch ^Mozilla/4 gzip-only-text/html 
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Nếu server của bạn không hỗ trợ mod_deflate bạn có thể thử mod_gzip để thay thế:

<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 mime ^application/x-javascript.*
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  mod_gzip_item_exclude mime ^image/.* 
  mod_gzip_item_include handler ^cgi-script$
</ifModule>

Khi thay đổi được lưu, gzip compression sẽ được kích hoạt.

Cách 2. Plug-ins CMS

WordPress users có thể kích hoạt gzip compression bằng cách cài plugins như là GZip Ninja Speed Compression.

Với Joomla, bạn có thể gzip wbesite của bạn qua mục Sytem -> Global Configuration -> Server. Bạn cũng có thể xem hướng dẫn Joomla perforamnce.

Cách 3. Bật nén qua cPanel

Nếu bạn có license cPanel, bạn có thể kích hoạt gzip cho tất cả website dưới tai khoản hosting của bạn qua mục Optimize Website

Option 4. Windows-based hosting

Nếu bạn đang dùng Windows server, bạn có thể kích hoạt việc nén HTTP cho nội dung tĩnh và động sử dụng command line sau:

appcmd set config /section:urlCompression /doDynamicCompression:True

appcmd set config /section:urlCompression /doStaticCompression:True

For more specifics, you can view the official Microsoft guide .

Bước 2 — Kiểm tra việc nén Gzip

Gzip compression có thể được kiểm tra bằng nhiều công cụ khác nhau, như là WebPageTest hoặc GTMetrix.

Đây là kết quả TRƯỚC KHI nén:

gzip-compression-test-1.

Để so sánh, đây là kết quả SAU KHI sử dụng nén:

gzip-compression-test-2.

Kết luận

Trong bài hướng dẫn ngắn này, chúng ta đã học cách tăng tốc website bằng cách kích hoạt mod_gzip hoặc mod_deflate qua .htaccess, CMS plug-ins, cPanel và Windows server.

Bài liên quan

Tăng tốc website với bật nén Gzip

Khi bạn truy cập vào site của bạn, một request sẽ được gửi tới server để chuyển file xuống. Những file này càng lớn, càng mất nhiều thời gian để tải. Bằng cách nén trang web của bạn và CSS trước khi gửi chúng qua cho trình duyệt sẽ giảm thời gian tải xuống đáng kể vì files sẽ nhỏ hơn.

Son Dong viết 2 tuần trước

Nén Gzip để tăng tốc độ tải website

Đa số các trình duyệt thông dụng hiện nay đều có khả năng giải nén những trang web đã được nén lại, để tiết kiệm băng thông và giúp thời gian tải website nhanh hơn. Mặc dù tính năng này đã được đưa ra một thời gian, nhưng ít ai chú ý hoặc biết đến nó. Đa số các trình ...

Tạ Quốc Bảo viết 3 tuần trước

Google tăng tốc Chrome với thuật toán nén mới

Google đang có kế hoạch làm cho Chrome nhanh hơn nhằm cải thiện trải nghiệm người dùng Internet. Thuật toán nén web mới, dữ liệu mã nguồn mở có tên Brotli, được Google ra mắt vào năm ngoái có khả năng tăng tốc đáng kể hiệu xuất làm việc của Chrome. Google cho biết thuật toán mới này là một định ...

Vũ Văn Thanh viết 10:38 ngày 18/09/2018

Tăng tốc Rspec với FactoryBot

Nếu bạn là một lập trình viên Rails thì chắc chắn bạn sẽ không hề xa lạ gì với Rspec và FactoryBot(tên cũ là FactoryGirl). Khi dự án của bạn có thời gian phát triển dài và quy mô lớn thì số lượng testcase của unit test sẽ rất lớn, để chạy hết số lượng testcase thì có thể mất tương đổi nhiều thời ...

Bùi Văn Nam viết 18:20 ngày 12/08/2018

Tăng tốc Rails với data model cache sử dụng gem IdentityCache

1. Giới thiệu Khi model ngày càng trở nên phức tạp, và yêu cầu cho response data từ controller hay API vẫn phải đảm bảo trong 1 giới hạn thời gian cho phép, giải pháp dễ dàng nhất là thực hiện preload, sử dụng includes để giảm bớt một số lượng lớn câu SQL. Tuy nhiên, model lại tiếp tục phức ...

Bùi Văn Nam viết 14:17 ngày 12/08/2018
0