OPcache
OPcache adalah ekstensi bawaan PHP yang menyimpan bytecode hasil kompilasi di memori server. Tanpa OPcache, setiap request membuat PHP membaca file .php, mengurainya menjadi bytecode, lalu membuangnya. Dengan OPcache, langkah mengurai dan mengompilasi terjadi sekali, dan request berikutnya langsung menjalankan bytecode yang tersimpan. OPcache menyimpan bytecode, bukan HTML jadi maupun hasil query database, jadi ia berdiri di lapisan yang berbeda dari Web Cache atau Object Cache. Ia mempercepat proses PHP itu sendiri, dan bekerja di bawah PHP-FPM maupun handler lain.
Direktif yang perlu dikenali
opcache.enable menyalakan atau mematikan fitur ini. opcache.memory_consumption menentukan berapa RAM yang dipakai menyimpan bytecode; alokasi terlalu kecil membuat bytecode terus terbuang dan manfaatnya hilang. opcache.max_accelerated_files membatasi jumlah file yang bisa di-cache, dan pada aplikasi dengan banyak file angkanya perlu dinaikkan. opcache.validate_timestamps mengatur apakah OPcache mengecek perubahan file, dan opcache.revalidate_freq menentukan seberapa sering pengecekan itu dilakukan.
Apa yang kedaluwarsa saat deploy
Saat validate_timestamps aktif, OPcache membandingkan waktu ubah file sesuai interval revalidate_freq; file yang berubah akan dikompilasi ulang. Di development, biarkan pengecekan ini aktif agar editan langsung terlihat. Di production, banyak orang mematikannya supaya tidak ada biaya stat() sama sekali, lalu melakukan reset cache manual setiap deploy. Konsekuensinya harus jelas: dengan opcache.validate_timestamps=0, OPcache tidak pernah mengecek file, jadi kode baru tidak dipakai sampai cache dibersihkan.
Mengecek dan membersihkan
Pastikan ekstensinya aktif lewat php -i | grep opcache.enable atau phpinfo(); kalau bagian opcache tidak muncul, fitur ini belum menyala. Setelah deploy, bersihkan cache lewat tombol di panel, fungsi opcache_reset(), atau dengan me-reload PHP-FPM. Perintah systemctl reload php-fpm umumnya mengosongkan bytecode yang tersimpan.
Kode lama yang tetap jalan
Risiko nyata muncul ketika file diganti di luar alur deploy biasa, misalnya lewat rsync, git checkout, atau FTP, sementara validate_timestamps mati. Waktu ubah file berubah tapi OPcache tidak pernah memeriksanya, sehingga PHP tetap menjalankan bytecode lama. Situs Anda terlihat rusak padahal file di disk sudah benar. Karena itu, setiap penggantian file out-of-band wajib disertai reset cache. Kalau ragu antara OPcache dan CDN yang menyimpan versi lama, cek dulu di sisi server; OPcache adalah cache lokal, bukan cache di jaringan.
FAQ
Apakah OPcache menyimpan HTML halaman?
Tidak. OPcache menyimpan bytecode hasil kompilasi PHP, bukan keluaran halaman. Page cache tetap diperlukan untuk menghilangkan request dari PHP sama sekali.
Apa beda revalidate_freq dan validate_timestamps?
validate_timestamps menentukan apakah OPcache mengecek perubahan file sama sekali; revalidate_freq menentukan seberapa sering pengecekan itu berjalan. Kalau validate_timestamps mati, revalidate_freq tidak berpengaruh.
Perlu restart PHP-FPM setelah deploy?
Tidak selalu. Clear OPcache sudah cukup untuk memaksa kompilasi ulang. Restart atau reload FPM hanya salah satu cara mengosongkan cache bytecode.
Disclaimer: Artikel WikiHosting disusun untuk tujuan edukasi dan referensi. Teknologi hosting terus berkembang, sehingga beberapa informasi teknis mungkin berubah seiring waktu.
