Konfigurasi cache konten Nginx

Seringnya saya menggunakan Nginx sebagai web server untuk WordPress dan walaupun pada plugin cache ada fitur pengaturan cache konten statis tapi sangat tidak disarankan karena diproses lewat PHP. Kecuali kita tidak memiliki akses ke Nginx. Nah… saya ada satu kebiasaan dan baru ingat belum pernah saya share disini, yakni membuat konfigurasi cache konten langsung dalam Nginx. Ini menjamin kecepatan melayankan juga performanya lebih optimal.

Ini bukan hal yang sulit kok, yang kita atur sebenarnya adalah sampai kapan konten statis tersebut boleh dicache oleh browser atau reverse proxy/CDN (akan saya bahas lain kali) dan jelas berhubungan nantinya misal kita layankan cache server di depan server aslinya.

Yang pasti silahkan isikan potongan kode berikut kedalam konfigurasi virtual host atau buat file konfigurasi baru (misal: cache_konten.conf) dan panggil dalam konfigurasi Nginx lainnya:

location ~* \.(?:manifest|appcache|html?|xml|json)$ {
  expires -1;
}

location ~* \.(?:rss|atom)$ {
  expires 1h;
  add_header Cache-Control "public";
}

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
  expires 1M;
  access_log off;
  add_header Cache-Control "public";
}

location ~* \.(?:css|js)$ {
  expires 1y;
  access_log off;
  add_header Cache-Control "public";
}

Kombinasikan dengan pengaturan kompresi GZIP dalam Nginx dijamin lebih mantap. 😀 Oh ya, ditambahkan header "public" supaya sistem selain browser bisa menyimpan cachenya. Sebaliknya kalau anda gunakan header "private" maka hanya browser yang diperbolehkan.

8 Comments

  1. trims infonya mas layak dicoba nih 🙂 tapi apa sudah cukup dengan memcache ditambah kompresi gzip? dan di default.conf juga saya tambahkan kode berikut :

    location ~* \.(?:ico|css|gif|jpe?g|js|png|swf)(\?.+)?$ {
    access_log              off;
    log_not_found           off;
    expires                 1y;
    }

    apa sama juga dengan 4 kode yang mas chandra share di atas?
    kalau nggak salah vestacp juga punya opsi untuk aktifasi cache nginx.

    1. Cukup kok mbak, sampai trafik 10ribuan per hari saja kombinasi Memcached+OPcache+Sedikit optimasi Nginx masih mampu. Ini di VPS dengan RAM 1GB tapi, dan cuma terpakai 730MBan.

      Satu konsep kok yang anda lakukan, cuma beda di jenis file dan kapan kadaluarsa file – filenya. 🙂

      Ho oh, di Vesta juga ada mbak tapi entah kenapa kok saya ga pernah dapat hasil memuaskan kalau dari panelnya. Heran dan karena sudah banyak situsnya malas utak – atik mbak.

      1. konfigurasi yang sudah ada itu saya hapus dan ganti dengan 4 kode dari mas chandra atau dibiarkan saja jadi lima kode, gimana bagusnya mas?

      2. Dasarnya begini mbak, kalau kontennya jarang berubah (gambar dan sebagainya) maka disimpan selama mungkin tidak masalah. Di kodenya mbak sebelumnya itu 1y alias 1 tahun.

        Nah… kalau di kode yang saya gunakan dipisah jadi 4 karena jenis kontennya berbeda jadi masa kadaluarsanya juga lain. Terserah anda gunakan yang mana mbak, salah satu saja karena kode anda yang asli sudah ada dalam kode yang saya bagikan. 🙂

      3. kayaknya memang harus upgrade ram ke 1gb biar lebih optimal 😀 lihat2 dulu review yg sudah ada 🙂

      4. Tutup mata saja mbak pas belanjanya. Hehe. 🙂 Saya belum ada kesempatan review lagi karena dana PayPal yang terbatas. 😛

        Tapi kalau mencari VPS alternatif dari DigitalOcean masih termasuk mudah, banyak kok yang nawarin 1GB tapi harganya bisa separuhnya lebih. Tinggal cari provider yang terpercaya saja kualitasnya.

    1. Saya yakin masalahnya bukan disebabkan setting ini mas. 🙂

      Kenapa? Karena ini aslinya hanyalah header yang diinstruksikan ke browser pengunjung berapa lama konten yang mereka muat seharusnya disimpan. Efeknya nanti akses berikutnya akan lebih cepat karena tidak perlu download lagi dari awal.

      Sesalah – salahnya setting header ini, saya ga pernah sampai tahu muncul 404 error not found.

      Coba cek setting Nginx lainnya mas, mungkin di konfigurasi location atau virtual hostnya bermasalah.

Tinggalkan Balasan ke niko Batalkan balasan

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