Какое кэширование лучше использовать для drupal - APCu, Memcached, Zend OPcache, redis?

Главные вкладки

Аватар пользователя jura12 jura12 27 июня в 22:59

помогите разобраться.

у меня:
memcached - установлено но не используется
Zend OPcache - наверно у всех включен.
apcu - поставил по просьбе друпала.
redis - не установлен.

на сервере 20 гигов памяти хочу чтоб использовалась полностью. удалось ее загрузить программой mysql tuner.

какой вы кэш используете для друпала? может Zend OPcache и apcu хватит для нормальной работы с большой памятью?

Комментарии

Аватар пользователя kosskren kosskren 6 июля в 9:35

Привет.

Надо определится со стратегией кеширования. Что кешировать, когда и на сколько. Как по мне это важнее, чем, что использовать. Если кешировать все подряд, то 20 гигов памяти улетят, не заметите)

Второй момент, надо понимать, когда обновлять кеш, при каких условиях, что бы пользователи видели обновленные страницы.

Что использовать?
memcached, apcu, redis - разницы особой нет, они делают то, что хранят кеш в оперативке. Я обычно redis использую, мне с ним как то удобнее работать.

Zend OPcache - тут хз на сколько прирост будет в скорости.

Был у меня сайт на поддержке, там клиент поместил весь сайт с базой RAM диск сервера, это виртуальный диск, расположенный в оперативной памяти. Сайт был реактивный, просто пушка, пока не отключили электричество в серверной). Данные с RAM на обычный диск не часто синхронизировались...

Аватар пользователя jura12 jura12 6 октября в 7:27

есть еще средства кэширования:
NGINX Reverse Proxy
Varnish HTTP Cache

проблема в том что есть пользователи и программа кэширования должна знать что эту страницу кэшировать не надо. актуальный плугин для взаимодействия есть у memcached : https://www.drupal.org/project/memcache . в общем буду пробовать его.

Аватар пользователя bsyomov bsyomov 15 октября в 4:42

Всё потому, что кешированием должно заниматься приложение, а не веб сервер или ещё что-то стороннее.
Соответственно, решать что кешировать, и что ещё важнее, что и когда инвалидировать правильно там, где есть данные для этого. С varnish это ещё теоретически возможно, с nginx fastcgi microcache каким-нибудь или кешом на стороне apache, и вовсе нет.

В общем, нет какого-то лучшего кеша для drupal(или чего-то ещё), есть более или менее подходящие хранилища для разных случаев.

Например, в каком-то случае, может быть хорошей идеей закешировать целые страницы в memcached и отдавать их оттуда nginx напрямую, вообще не дёргая php, но это уж точно не подходит на все случаи просто потому, что страниц может быть много, а памяти мало.

Часто, кеширование в базе довольно неплохое решение, тем более, что там работает пакетная загрузка из кеша, а в memcached и redis нет. И данные при правильно настроенной базе точно также могут быть в памяти, и не подтягиваться с диска. И это может быть даже быстрее key-value в результате.

Из memcached и redis, обычно, имеет смысл выбирать redis, т.к. он умеет сохранять данные на диске, и имеет примерно то же самое быстродействие.

Разные хранилища кеша могут использоваться совместно для разных целей. Например apcu для кеша бутстрап, а база для остального.

Opcache вообще тут отдельная штука, это не кеш данных.