Mengaktifkan browser caching di Apache

Untuk mempercepat akses website yang dihosting menggunakan web server Apache selain kita bisa mengaktifkan kompresi GZIP untuk setiap koneksi juga sangat dianjurkan agar mengaktifkan browser caching untuk konten yang bersifat statis atau jarang berubah. Misalnya saja file JavaScript, CSS, gambar (JPG, PNG, GIF), PDF, dan sebagainya.

Fungsinya agar browser pengunjung menyimpannya sampai waktu yang ditentukan oleh server situsnya, ini bisa mencapai 1 tahun kalau mau. Keuntungannya adalah pengunjung tidak perlu memuat kembali file – file yang sudah dicache oleh browsernya, jadi untuk setiap akses setelah yang pertama akan terasa sangat cepat.

Di Apache sendiri kita bisa memanfaatkan 2 modul: mod_headers dan mod_expires, nanti kita gunakan salah satunya saja karena sudah cukup. Jangan sampai keduanya aktif bersamaan. Dimana meletakkannya? Silahkan tambahkan ke dalam file httpd.conf dan kalau terpaksa bisa dimasukkan kedalam file .htaccess. Jadi cara ini bisa juga diterapkan pada shared hosting dengan cPanel.

Nah… pertama adalah dengan menggunakan mod_headers:

<IfModule mod_headers.c>
    Header unset ETag
  
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
  </filesMatch>
  <filesMatch "\.(css)$">
    Header set Cache-Control "max-age=604800, public"
  </filesMatch>
  <filesMatch "\.(js)$">
    Header set Cache-Control "max-age=216000, private"
  </filesMatch>
  <filesMatch "\.(x?html?|php)$">
    Header set Cache-Control "max-age=600, private, must-revalidate"
  </filesMatch>
</IfModule>

FileETag None

Sekalian saja mematikan ETag karena sudah bisa digantikan oleh modul apache yang sedang kita bahas fungsinya.

Sedangkan yang kedua memanfaatkan mod_expires:

<IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"
    ExpiresByType text/css                              "access plus 1 year"
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rdf+xml                   "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"
    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/ld+json                   "access plus 0 seconds"
    ExpiresByType application/schema+json               "access plus 0 seconds"
    ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"
    ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
    ExpiresByType image/x-icon                          "access plus 1 week"
    ExpiresByType text/html                             "access plus 0 seconds"
    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
    ExpiresByType text/javascript                       "access plus 1 year"
    ExpiresByType application/manifest+json             "access plus 1 year"
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/bmp                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"
    ExpiresByType image/webp                            "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType font/eot                              "access plus 1 month"
    ExpiresByType font/opentype                         "access plus 1 month"
    ExpiresByType application/x-font-ttf                "access plus 1 month"
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/x-font-woff               "access plus 1 month"
    ExpiresByType font/woff                             "access plus 1 month"
    ExpiresByType application/font-woff2                "access plus 1 month"
    ExpiresByType text/x-cross-domain-policy            "access plus 1 week"

</IfModule>

Yang diatas hanyalah contoh saja dari salah satu situs WordPress yang saya miliki, sangat dianjurkan untuk dimodifikasi sesuai keinginan anda karena belum tentu setting saya cocok dengan website anda.

Semoga bermanfaat. 🙂

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *