Вы должны понимать четкое различие между этими двумя продуктами, чтобы понять, как их использовать.
- APC - это и OPCode Cache, и Fast Backend
- Memcache - это быстрый бэкэнд
Использование APC в качестве кеша OPCode
Просто установите модуль на свой сервер
pecl install apc
И включите его в своем php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Затем вы включаете и настраиваете конфигурацию среды выполнения в соответствии, например.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Затем перезапустите PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
После этого больше нечего делать. Подтвердите, что APC включен быстро, phpinfo()
но в противном случае в этот момент часть APC-кэша APC активна.
Ничего не нужно настраивать на стороне Magento.
Использование APC в качестве быстрого бэкэнда
Вы должны добавить следующее к вашему ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Затем очистите существующие кэши магазина. Чтобы убедиться, что он работает, загрузите страницу в интерфейсе, и ./var/cache
каталог должен остаться пустым.
Использование Memcache в качестве быстрого бэкэнда
Вам нужно будет установить Memcache как расширение PHP и установить соответствующий демон Memcache (Memcached) на ваш сервер.
pecl install memcache
И включите его в своем 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)
Затем установите Memcached на сервер. Для RH / Centos настройте URL-адрес в соответствии с версией выпуска и архитектурой процессора.
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)
Затем измените Magento для использования Memcache в качестве быстрого бэкэнда, измените путь к сокету на соединение TCP / IP, чтобы оно подходило.
<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>
Предостережения о Memcache и тегах - что это хранит
Memcache поддерживает только один уровень отношений ключ-значение, поэтому он не может хранить теги кэша Magento (которые используются для независимой очистки данных кэша). В результате вам нужно либо указать a slow_backend
для поддержания отношения тега содержимого кеша, либо вообще не определять его.
Если вы определите a slow_backend
, то рискуете, что теги кеша станут настолько большими, что производительность будет сведена на нет; Существует также внутренняя проблема, которую нельзя масштабировать на нескольких серверах, если каждый сервер поддерживает свои собственные теги кеша.
Таким образом, при использовании Memcache лучший подход (с предупреждением, что вы не можете очищать кэши независимо), состоит в том, чтобы не беспокоиться об использовании slow_backend
.
В этом случае мы предлагаем удалить <slow_backend>database</slow_backend>
и заменить его на:
<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>
Это сломает / отключит 2-й уровень кэширования (и предотвратит хранение тегов), но все же позволит повысить производительность Memcache.
Какой использовать
Если это развертывание на одном сервере - нет ничего страшного, если использовать APC для всего.
Если это распределенная установка - тогда вам нужно использовать Memcache в качестве быстрого бэкэнда (чтобы все машины могли получить доступ к общему хранилищу).
Еще одна проблема заключается в том, что если ваш хостинг-провайдер не может сказать вам правильную настройку для использования, вы, безусловно, с неправильным хостом.
Атрибуты: sonassi.com , php.net , repoforge.org