Howto manage cache-control with mod_expire di Apache

By | January 22, 2009

Melihat dari cara kerja squid proxy, yaitu menyimpan suatu object di memory untuk periode tertentu. Jadi apabila dalam periode tersebut terdapat request maka squid tidak perlu akses ke sumbernya tapi langsung di ambil dari memory.
Ternyata di Apache juga bisa meningkatkan performa dan menghemat penggunaan bandwidth dengan menerapkan sistem seperti di squid proxy, yaitu melalui mod_expire

mod_expires merupakan modul yang memungkinkan kita bisa menetapkan waktu suatu object di cache oleh browser atau proxy cache.
Mod_expire di apache bisa diaktifkan sewaktu configure install :

  • Apache 1.3.x: menambahkan options –enable-module=expires sewaktu ./configure
  • Apache 2.0.x: menambahkan options –enable-expires sewaktu ./configure

kemudian tambahkan baris berikut di httpd.conf untuk meload module :

LoadModule expires_module modules/mod_expires.so

khusus untuk apache 1.3.x perlu juga ditambah baris berikut agar tidak error :

AddModule mod_expires.c

sedangkan untuk mengatur file apa saja dan berapa lama expires time-nya kita bisa gunakan perintah berikut :

<IfModule mod_expires.c>
   ExpiresActive on
   ExpiresByType image/gif "access plus 5 minutes"
   ExpiresDefault "access plus 1 days"
</IfModule>

baris perintah di atas mendeklarasikan secara default semua file di webserver secara default expires di set selama 1 hari, sedangkan untuk file dengan type gif di set expires selama 5 menit.

bisa juga dideklarasikan di dalam <Directory></Directory> dengan tujuan kita hanya akan menerapkan expires untuk semua file pada folder tertentu saja.
Atau bisa juga dengan mendefinisikan khusus untuk type file tertentu dengan cara :

<Directory “/var/www/htdocs”>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
ExpiresDefault A300
<FilesMatch “\.html$”>
ExpiresDefault A300
</FilesMatch>
<FilesMatch "\.(gif|jpg|png|js|css)$">
Expires A300
</FilesMatch>
</Directory>

catatan A300 artinya sama dengan access plus 300 seconds.
kemudian apache di restart, dan kita cek dengan browser access kemudian di lihat headernya apabila hasilnya seperti di bawah ini berarti mod expires sudah terinstall dengan baik :

HTTP/1.1 200 OK
  Date: Mon, 18 Oct 2004 12:14:02 GMT
  Server: Apache/1.3.41 (Unix)  (Gentoo/Linux)
  Content-Location: index.html.en
  Vary: negotiate,accept-language,accept-charset
  TCN: choice
  Cache-Control: max-age=86400
  Expires: Tue, 19 Oct 2004 12:14:02 GMT
  Last-Modified: Mon, 18 Oct 2004 11:39:02 GMT
  ETag: "173d347-5b0-4173ab56;4173ab58"
  Accept-Ranges: bytes
  Content-Length: 1456
  Connection: close
  Content-Type: text/html
  Content-Language: en

kalau anda memakai linux bisa menggunakan browser text base, dengan perintah
lynx -head http://localhost

cara ini paling efektif untuk meningkatkan performa apache dan menghemat bandwidth terutama untuk file yang sifatnya statis seperti image, js dan css.