[WebServer] Mengaktifkan Fitur Kompresi Webserver

nginx
Salah satu bentuk dukungan pemilik web terhadap para pengaksesnya adalah : mempermudah proses pembukaan web. Mempermudah itu dapat berarti banyak hal:

  1. Mengaktifkan tampilan yang responsif terhadap lebar layar dan jenis media
  2. Memperingan load web, selain cepat diakses juga mengurangi pemborosan quota selular pengakses


Memperingan muatan web dapat dilakukan dengan cara mengatur konten yang dimuat pertama kali, mengatur size gambar, mengurangi banyaknya script dan lain sebagainya. Namun ada satu fitur penting dalam web server yang dapat memperingan pengakses adalah adanya fitur DEFLATE atau GZIP. Yaitu fitur kompresi dokumen. Dengan fitur kompresi ini, dokumen yang dimuat oleh webserver akan dikompresi lebih dahulu sebelum dikirim ke browser pengakses. Setelah sampai di browser pengakses, akan diekstrak dan ditampilkan dalam keadaan normal.

Dukungan Browser

Untuk keperluan gzip dan deflate, maka browser haruslah lebih dulu melakukan request data yang juga bersifat gzip atau deflate. Pada umumnya browser jaman sekarang akan melakukan request kompresi data. Jika server mendukung kompresi data, namun browser tidak melakukan request kompresi data, maka data yang akan diberikan juga tidak akan bersifat terkompresi.

Dukungan Server

Untuk keperluan kompresi data, maka webserver perlu diberikan modul kompresi data. Berikut pada bagian bawah ini sedikit share untuk aktivasi kompresi data untuk jenis webserver Nginx dan Apache.

1. Ubuntu, Debian, SuSE
Aktivasi jenis linux ini dilakukan dengan menambahkan perintah berikut:

sudo a2enmod deflate
sudo service apache2 restart

2. CentOS

cd /usr/local/src
wget https://archive.apache.org/dist/httpd/httpd-2.2.19.tar.gz
tar -xzvf httpd-2.2.19.tar.gz
cd httpd-2.2.19/modules/filters
sudo apxs -i -c -Wl,lz mod_deflate.c

Dan menambahkan pada /etc/httpd/conf/httpd.conf

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.[0678] no-gzip
BrowserMatch \bMSIE\s7 !no-gzip !gzip-only-text/html
BrowserMatch \bOpera !no-gzip
Header append Vary User-Agent
DeflateCompressionLevel 9

Dan restart/refresh webservernya

service httpd restart

3. Nginx
Pada umumnya gzip sudah dibawa oleh nginx dalam instalasi standardnya. Admin tinggal melakukan pendefinisian di dalam documentRoot.

.htaccess
Bagi para pemilik web yang sudah terlanjur menggunakan webhosting, dimana kita tidak mungkin lagi melakukan modifikasi webserver, dapat diberikan langkah berikut melalui penambahan file .htaccess. Pada .htaccess Apache dapat ditambahkan seperti berikut:



	AddOutputFilterByType DEFLATE application/javascript
	AddOutputFilterByType DEFLATE application/x-javascript
	AddOutputFilterByType DEFLATE text/css
	AddOutputFilterByType DEFLATE text/plain
	AddOutputFilterByType DEFLATE text/html
	AddOutputFilterByType DEFLATE text/xml
	AddOutputFilterByType DEFLATE application/xml
	AddOutputFilterByType DEFLATE application/xhtml+xml
	AddOutputFilterByType DEFLATE application/rss+xml
	AddOutputFilterByType DEFLATE application/javascript
	AddOutputFilterByType DEFLATE application/x-javascript


Sedangkan pada nginx dapat dilakukan penambahan seperti berikut:

gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_disable "msie6";

Cara Testing

Testing gzip/deflate dapat dilakukan dengan beberapa cara, antara lain:

  1. Testing dari sisi client
  2. Testing secara online
  3. Testing secara online terhadap keseluruhan web

Testing dari sisi client

Testing dari sisi client dapat dilakukan dengan perintah bash linux:

curl -I -H 'Accept-Encoding: gzip' https://blogit.bimosaurus.com

atau

curl -I --compressed https://blogit.bimosaurus.com

Hasilnya kira-kira seperti berikut:

HTTP/1.1 200 OK
Date: Wed, 24 Jun 2015 06:10:55 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Cache-Control: max-age=2592000
Expires: Fri, 24 Jul 2015 06:10:55 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html; charset=UTF-8

Vary: Accept-Encoding menunjukkan bahwa browser melakukan request format tergzip. Sedangkan Content-Encoding: gzip adalah menunjukkan bahwa halaman index dalam situs bimosaurus.com telah dalam keadaan terkompresi. Namun tidak serta merta seluruh dokumen dalam situs tersebut dalam keadaan terkompresi. Oleh karena itu kita dapat memeriksa satu sample file pendukung lain semisal adalah styles.css

curl -I --compressed https://blogit.bimosaurus.com/wp-content/plugins/crayon-syntax-highlighter/css/min/crayon.min.css?ver=2.4.1

Testing Online

Proses testing dapat juga dilakukan dari situs luar seperti misal : http://www.whatsmyip.org/http-compression-test/

Testing keseluruhan

Beberapa situs yang sering digunakan antara lain:
http://www.websiteoptimization.com/services/analyze/
http://tools.pingdom.com/fpt/
http://www.webpagetest.org/
https://developers.google.com/speed/pagespeed/?csw=1
http://yslow.org/

Sekian, semoga berguna

One thought on “[WebServer] Mengaktifkan Fitur Kompresi Webserver

Leave a Reply

Your email address will not be published. Required fields are marked *