È necessario comprendere la chiara distinzione tra questi due prodotti per capire come usarli.
- APC è sia OPCode Cache sia Fast Backend
- Memcache è solo un backend veloce
Utilizzo di APC come cache OPCode
Installa semplicemente il modulo sul tuo server
pecl install apc
E abilitalo nel tuo php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Quindi abilitare e ottimizzare la configurazione di runtime per adattarla, ad es.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Quindi riavviare PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Dopo ciò, non c'è nient'altro da fare. Conferma che APC è abilitato con una rapida phpinfo()
, ma altrimenti, a questo punto, la porzione di cache OPCode di APC è attiva.
Nulla deve essere configurato dal lato di Magento.
Utilizzo di APC come backend veloce
Devi aggiungere quanto segue al tuo ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Quindi svuota le cache dei negozi esistenti. Per verificare che funzioni, caricare una pagina nel front-end e la ./var/cache
directory dovrebbe rimanere vuota.
Utilizzo di Memcache come backend veloce
Dovrai installare Memcache come estensione PHP e installare il rispettivo Demone Memcache (Memcached) sul tuo server.
pecl install memcache
E abilitalo nel tuo php.ini
echo "extension=memcache.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=memcache.so" >> /etc/php5/conf.d/20memcache.ini (Debian)
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Quindi installare Memcached sul server. Per RH / Centos, regola l'URL in base alla versione di rilascio e all'architettura della CPU.
rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
yum --enablerepo=rpmforge install memcached
apt-get install memcached (Debian)
Quindi modificare Magento per utilizzare Memcache come backend veloce, cambiare il percorso del socket in una connessione TCP / IP per adattarsi.
<cache>
<slow_backend>database</slow_backend>
<fast_backend>memcached</fast_backend>
<fast_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</fast_backend_options>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</cache>
Le avvertenze di Memcache e tagging: cosa memorizza
Memcache supporta solo un singolo livello di relazioni chiave-valore, quindi non può archiviare i tag della cache Magento (che vengono utilizzati per svuotare i dati della cache in modo indipendente). Di conseguenza, è necessario specificare a slow_backend
per mantenere la relazione del tag del contenuto della cache o non definirne affatto.
Se si definisce a slow_backend
, si corre il rischio che i tag della cache diventino così grandi da compromettere le prestazioni; c'è anche il problema intrinseco che non è possibile ridimensionare su più server se ciascun server mantiene i propri tag cache.
Quindi, quando si utilizza Memcache, l' approccio migliore (con l'avvertenza non è possibile svuotare le cache in modo indipendente), è di non preoccuparsi di usare il slow_backend
.
In tal caso, ti consigliamo di rimuoverlo <slow_backend>database</slow_backend>
e sostituirlo con:
<slow_backend>Memcached</slow_backend>
<slow_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</slow_backend_options>
Ciò interromperà / disabiliterà il 2 ° livello di memorizzazione nella cache (e impedirà l'archiviazione dei tag), ma consentirà comunque l'esecuzione di Memcache.
Quale usare
Se si tratta di una distribuzione su un singolo server , non c'è nulla di male ad usare APC per tutto.
Se si tratta di una configurazione distribuita , dovrai utilizzare Memcache come backend veloce (in modo che tutte le macchine possano accedere all'archivio comune).
Più preoccupante è che se il tuo provider di hosting non può dirti la giusta configurazione da utilizzare, sei sicuramente con l'host sbagliato.
Attribuzioni: sonassi.com , php.net , repoforge.org