it-swarm-id.com

Cache PHP (opcode) yang harus digunakan dan mengapa?

Saya terus mendengar tentang beberapa cache PHP (opcode) seperti - APC, XCache, Memcache, eAccelerator, dll.

Tapi saya tidak pernah tahu bagaimana cara memilih satu. Terlepas dari manfaat kinerja, yang seharusnya diberikan oleh sistem caching, faktor lain mana yang harus menjadi perhatian.

Seperti mengapa Anda akan mengatakan sistem X cache lebih baik daripada Y? Saya kurang khawatir tentang perolehan kinerja relatif. Perbedaan kecil antara dua sistem tidak begitu penting.

Jika jawaban umum untuk pertanyaan saya tidak memungkinkan, berikut adalah beberapa petunjuk. Saya menggunakan VPS khusus dengan Mediatemple (dengan akses root). RAM adalah 512 MB (fisik) + 400MB (swap) Saya khawatir tentang WordPress dan sepupunya WordPress-MU dan BuddyPress. 90% dari kode kami) situs termasuk dalam WordPress keluarga.

Terima kasih sebelumnya atas bantuannya.

44
rahul286

Produk yang Anda daftarkan memiliki tujuan berbeda.

Tembolok OPCode

Ada banyak PHP Akselerator (OPCaches) seperti yang terlihat pada ini daftar Wikipedia . Seperti biasa dengan produk-produk open source, semuanya hampir mirip. XCache adalah lighttp = PHP akselerator, dan merupakan pilihan default ketika Anda menjalankan HTTPd itu. Ia bekerja dengan baik dengan Apache juga, namun APC tampaknya sedikit lebih "bermain baik dengan orang lain" secara sosial, secara resmi didukung sebagai bagian dari PHP, dan dirilis bersamaan dengan distribusi resmi PHP.

Saya meninggalkan eAccelerator kami karena perkembangannya yang lambat, dan tertinggal terhadap rilis PHP, dan status resmi yang diberkati APC dengan kinerja yang sama.

Produk-produk ini biasanya turun; tidak ada kode yang mengubah peningkatan kinerja instan. Dengan basis kode besar (Drupal, Wordpress) kinerjanya bisa mencapai x lebih baik sambil menurunkan waktu respons dan penggunaan memori.

Caching Data

Memcache adalah produk yang sedikit berbeda - Anda mungkin menganggapnya sebagai sistem nilai kunci ringan yang dapat diskalakan ke beberapa server . Perangkat lunak harus ditingkatkan untuk mendukung Memcache, dan itu memecahkan masalah tertentu lebih baik daripada yang lain. Jika Anda memiliki daftar nilai stok realtime di situs web Anda, Anda dapat menggunakan Memcache untuk menyimpan daftar penduduk dari nilai saat ini yang ditampilkan di seluruh situs web Anda. Anda mungkin menggunakannya untuk menyimpan data sesi untuk penggunaan kembali jangka pendek. Anda tidak akan menggunakannya untuk hal-hal lain seperti cache satu halaman penuh, atau sebagai pengganti MySQL.

Ada juga Wordpress addon seperti WP-Super-Cache yang secara drastis dapat meningkatkan kinerja Wordpress (infact, WP-Super-Cache dapat menyaingi situs berbasis HTML statis di Banyak kasus)

Singkatnya - Saya akan sangat merekomendasikan APC jika Anda ingin "mengatur dan melupakannya, produk yang didukung dengan baik".

33
SirStan

Jawaban yang bagus diposting di stackoverflow yang menjawab pertanyaan Anda dengan baik.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8

Hanya untuk mencatat bahwa beberapa hal telah berubah sedikit dan tampaknya APC tidak akan dimasukkan dalam PHP 6 inti.

APC memiliki perkembangan yang lambat dan sepertinya tidak akan pernah kompatibel PHP 5.5. Karena itu, sepertinya orang-orang dari PHP akan mengatur cache opcode Zend OPCache cache ekstensi sebagai PHP ekstensi INTI. Anda peduli baca lebih lanjut di sini http://wiki.php.net/rfc/optimizerplus .

Catatan penting: Zend OPCache tidak memiliki cache data pengguna seperti APC, jadi jika Anda membutuhkan cache data pengguna, Anda dapat menggunakannya bersama dengan Memcache.

6
Nemke

APC akan dibangun ke dalam PHP6, jadi ini adalah pilihan yang logis. Saya menggunakannya, dan peningkatan kinerja luar biasa. Jika Anda perlu melakukan cache sesuatu selain opcodes (mis. Hasil permintaan db), Anda dapat menggunakan APC untuk itu juga, tetapi tidak mungkin untuk membagikan cache APC antara beberapa server. Jika Anda hanya perlu melakukan cache pada satu server, APC hebat. Jika Anda perlu meningkatkan ke beberapa server, dan ingin berbagi cache di antara mereka, memcached adalah teman Anda.

Namun, satu hal yang akan saya lakukan adalah membuat kelas pembungkus untuk setiap caching (non-opcode) yang Anda lakukan. Dengan begitu Anda bisa menukar mesin caching tanpa mengubah kode Anda.

6
lo_fye

Jika menjalankan PHP versi setidaknya 5.50, OpCache adalah taruhan terbaik Anda (PHP/PECL native library). Itu harus datang pra-dikompilasi jika menginstal dari biner.

http://php.net/manual/en/book.opcache.php

Jika menjalankan PHP versi sebelum 5.5, APC (PHP/PECL cache OpCode asli) akan menjadi pilihan paling sederhana, meskipun dianggap tidak terawat dan mati:

http://php.net/manual/en/book.apc.php

Menggunakan fungsionalitas OpCache asli PHP akan menyelamatkan Anda dari kesulitan mempertahankan perpustakaan pihak ke-3.

3
recurse

Pasangan cache kunci/nilai cache, bukan opcode. Anda dapat menggunakannya bersamaan dengan salah satu dari cache opcode.

0
user10699