Browser memiliki kemampuan untuk melakukan cache pada waktu menampilkan web. Apa pengaruh Expires Header terhadap cache yang dilakukan oleh browser tersebut?
Membuat Expires Header
Kecepatan membuka suatu web salah satunya adalah karena browser tidak perlu mengambil data dari server, tetapi dari data yang ada di perangkat itu sendiri. Apabila salah dalam melakukan pengaturan, maka tampilan menjadi tidak up to date.
— Pengaruh Expires Header Terhadap Cache Browser
Modul mod_expires mengatur respon server berupa Expires dan max-age dari Cache-Control pada header HTTP. Header tersebut merupakan intruksi kepada klien (browser) untuk mengambil dari cache atau mengambil dari server ketika waktu sudah melebihi yang ditentukan di dalam header.
|-Sintaksis
ExpiresDefault "base[plus num type] [num type] ..."
ExpiresByType type/encoding "base[plus num type] [num type] ..."
base = access | now | modification
num = nilai integer
type = years | months | weeks | days | hours | minutes | seconds
|-Best Practice
- text/html dan application/json sebaiknya tidak menggunakan cache karena isi dari web cenderung berubah. Gunakan now.
- Media, huruf, javascript dan css sebaiknya dibuat lama untuk waktu menggunakan cache, misalnya 1 bulan (access plus 1 month).
- Jika memungkinkan, maka pengaturan dapat diletakkan di konfigurasi server, virtual host atau directory. Namun, jika terpaksa, maka pengaturan dapat diletakkan di .htaccess.
|-Contoh
#berkas /etc/apache2/include/expires-header.conf
<IfModule mod_expires.c>
ExpiresActive on
# whitelist expires rules
ExpiresDefault "access 1 month"
# HTML always fresh from server
ExpiresByType text/html "now"
ExpiresByType application/json "now"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 2 weeks"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Webfonts
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
</IfModule>
Contoh pada Virtual Host
Include include/expires-header.conf
<VirtualHost _default_:443>
#...
</VirtualHost>
Demikian, semoga bermanfaat. [bst]
Sumber: