Untuk laman web yang berdasarkan pada WordPress , Joomla atau Laravel , misalnya, dan tidak mempunyai kandungan khusus pengguna, disarankan untuk menyimpan semua halaman dalam cache HTML statik dan hanya membuat semula cache secara manual (atau secara automatik) jika ada perubahan pada backend. Namun, jika halaman tersebut mengandungi kandungan dinamis yang bergantung pada sesi dan kuki atau juga pada bahasa dan lokasi, OPcache sesuai .
Masa boot yang disebut untuk ketiga-tiga sistem yang disebutkan adalah lebih dari 100 ms dengan pelayan CentOS7 yang baru dipasang (dengan SSD dan PHP 7.1). Setiap kali skrip PHP dijalankan, skrip tersebut harus dikompilasi menjadi bytecode pada waktu runtime. OPcache sekarang menerapkan cache untuk bytecode ini - jika skrip PHP yang sama dijalankan dengan permintaan berikutnya, ia tidak perlu dikompilasi ulang. Setelah mengaktifkan OPcache kami menetapkan tetapan berikut:
9006cec6c5d3d2498ee26c5bfd91590a
Masa pelaksanaan (rata-rata lebih dari 10 pelaksanaan) kini telah dikurangkan dengan ketara:
WordPress 4.7.4 | Joomla 3.7 | Laravel 5.4 | |
tanpa OPcache | 295 ms | 201 ms | 110 ms |
dengan OPcache | 54 ms | 59 ms | 13 ms |
Faktor | 5,5 | 3,5 | 8,5 |
Oleh kerana kami menetapkan validate_timestamps ke 0 dan pada masa yang sama revalidate_freq untuk jangka masa satu hari, cache hampir tidak pernah dibina semula secara automatik (kami secara sedar melakukan ini secara manual). Dengan cangkuk git kecil, skrip PHP dijalankan dengan setiap "tarikan". Cara mengaktifkan cangkuk:
a1678610c8b4c7db5997375944183830
a1678610c8b4c7db5997375944183830
Fungsi pembantu berikut juga berguna untuk mengukur bahagian kod individu (atau keseluruhan masa pelaksanaan):
085f4291bbcc4e8a64bbea951ff49ab9
Sekiranya anda ingin mendapatkan maklumat berguna seperti status, memori terpakai atau jumlah fail dalam cache, anda menggunakan fungsi PHP ini:
3f6309d04bc7e48dd909859321b96209
Untuk mendapat keuntungan dari OPcache dalam lingkungan pengembangan tempatan (yang umumnya tidak disarankan), kami menggunakan tipuan.
OPcache aktif di semua pelayan yang telah memasang modul OPcache dan di mana tetapan opcache.enable tidak ditetapkan secara eksplisit. Kami membiarkannya begitu. Kami hanya menetapkan opcache.validate_timestamps = 1 dalam php.ini. Ini bermaksud opcache.revalidate_freq = 2. Ini bermakna OPcache disahkan semula hampir berterusan untuk setiap projek. Untuk projek-projek di mana kami ingin mengaktifkan OPcache secara kekal, kami menggunakan projek yang berkaitan dalam .htaccess tetapan berikut:
1dd64a3f2fe4425b29b1409410fe3fc0
Kemudian kami mulakan semula pelayan web dan buat skrip berikut:
91fb5289160e410607c9ea89112a575b
Skrip ini membersihkan cache dan membina semula pada masa yang sama. Sekarang kami menetapkan arahan RunOnSave yang berkaitan dengan ruang kerja dalam editor kegemaran kami VSCode:
91fb5289160e410607c9ea89112a575b