Иконка ресурса

Включаем кеширование в XF 2.0

Jumuro

Проверенные
Сообщения
1,324
Реакции
2,491
Баллы
11,345
Пользователь Jumuro разместил новый ресурс:

Включаем кеширование в XF 2.0 - кеш xf 2.0

Включим кеширование на примере php-apc.

Синтаксис, в отличии от XF 1.5, немного поменялся.
В файл src/config.php добавим следующее:
PHP:
$config['cache']['enabled'] = true;
$config['cache']['namespace'] = 'xf';
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Apc';

Узнать больше об этом ресурсе...
 
Последнее редактирование модератором:
Пользователь Jumuro обновил ресурс Включаем кеширование в XF 2.0 новой записью:

Примечание

Перед использованием следующих команд необходимо кеширование отключить:
Bash:
xf-addon:build-release
xf-addon:bump-version
xf-addon:write-hashes
xf-addon:sync-json
xf-addon:create
xf-addon:export

Узнать больше об этом обновлении...
 
Закидываю в конфиг и форум перестает работать. HTTP ERROR 500 в чём может быть проблема, подскажите.
Убираю эту строчку $config['cache']['provider'] = 'Apc'; и работает. За что отвечает эта строка?
Всё понял, на серваке не установлено расширение APC)))
 
Последнее редактирование:
Так да, сервис кэширования кто будет подключать, настраивать его на сервере?
Ну Вы блин даёте. :laugh:
 
Если кому-то будет полезно, то Memcached кэширование у меня на XenForo 2.0 заработало вот с такими настройками:

Код:
$config['cache']['enabled'] = true;
$config['cache']['cacheSessions'] = true;
$config['cache']['frontend'] = 'Core';
$config['cache']['frontendOptions'] = array(
'caching' => true,
'cache_id_prefix' => 'xfxx_',
'automatic_serialization' => false,
'lifetime' => 0
);

$config['cache']['backend'] = 'Libmemcached';

$config['cache']['backendOptions'] = array(
'servers' => array(
array(
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 1
)
)
);
 
На PHP 7.1 соответственно APCU - вместо APC - наблюдаем ошибку кэширования.
Код:
Stack trace:
#0 /home/my site/public_html/src/XF/CacheFactory.php(24): XF\CacheFactory->instantiate('apcu', Array)
#1 /home/my site/public_html/src/XF/App.php(453): XF\CacheFactory->create('apcu', Array)
#2 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#3 /home/my site/public_html/src/XF/App.php(475): XF\Container->offsetGet('cache')
#4 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#5 /home/my site/public_html/src/XF/App.php(1319): XF\Container->offsetGet('registry')
#6 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#7 /home/my site/public_html/src/XF/App.php(1147): XF\Container->offsetGet('extension.liste...')
#8 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#9 /home/my site/public_html/ in /home/my site/public_html/src/XF/CacheFactory.php on line 66
[17-Sep-2017 15:50:17 UTC] PHP Fatal error:  Uncaught LogicException: Cannot load APC cache provider without APC in /home/my site/public_html/src/XF/CacheFactory.php:79
Stack trace:
#0 /home/my site/public_html/src/XF/CacheFactory.php(69): XF\CacheFactory->createApcCache(Array)
#1 /home/my site/public_html/src/XF/CacheFactory.php(24): XF\CacheFactory->instantiate('apc', Array)
#2 /home/my site/public_html/src/XF/App.php(453): XF\CacheFactory->create('apc', Array)
#3 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#4 /home/my site/public_html/src/XF/App.php(475): XF\Container->offsetGet('cache')
#5 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#6 /home/my site/public_html/src/XF/App.php(1319): XF\Container->offsetGet('registry')
#7 /home/my site/public_html/src/XF/Container.php(28): XF\App->XF\{closure}(Object(XF\Container))
#8 /home/my site/public_html/src/XF/App.php(1147): XF\Container->offsetGet('extension.liste...')
#9 /home/my site/public_html/ in /home/my site/public_html/src/XF/CacheFactory.php on line 79
 
На PHP 7 APC/APCu не работает из коробки.
 
  • Мне нравится
Реакции: Hope
Как-то пусто в теме, стоит добавить:
Для кеша в файловой системе
Код:
$config['cache']['enabled'] = true;
$config['cache']['provider'] = 'Filesystem';
$config['cache']['config'] = [
    'directory' => '/path/to/your/cache/directory'
];

Memcached
Код:
$config['cache']['enabled'] = true;
$config['cache']['provider'] = 'Memcached';
$config['cache']['config'] = [
    'server' => '127.0.0.1'
];

Redis
Код:
$config['cache']['enabled'] = true;
$config['cache']['provider'] = 'Redis';
$config['cache']['config'] = [
    'host' => '127.0.0.1',
    'password' => 'password'
];
Дополнительные значения для Redis
Код:
'host' => '',
'port' => 6379,
'timeout' => 0.0,
'password' => '',
'database' => 0,
'persistent' => false,
'persistent_id' => ''

WinCache (что то новенькое для меня)
Код:
$config['cache']['enabled'] = true;
$config['cache']['provider'] = 'WinCache';

XCache
Код:
$config['cache']['enabled'] = true;
$config['cache']['provider'] = 'XCache';

И небольшие замечания к копипасте:
1. Это образцы и если не заработало сразу, то конфиг нужно допиливать под нюансы выбранного вида кеширование;
2. Ни один из конфигов не заработает если вы не установили выбранный вид кеширования (сами или хостер ибо даже файловый кеш требует созданной папки);
3. Если используете APC внимательно отнеситесь к настройке если включено кеширование сессии ($config['cache']['sessions'] = true; ). Если в кеше не хватит места для сессии, то пользователь не попадет на форум (перевод крайне вольный, так, что как есть).
 
Последнее редактирование:
. Ни один из конфигов не заработает если вы не установили выбранный вид кеширования (сами или хостер ибо даже файловый кеш требует созданной папки);
Из всего списка, более-менее вменяемое Memcached/Redis
 
akok, А как проверить работает или нет кэш?
 
А если не работает, то форум не заведется и будет выдавать ошибку... как правило.

Из всего списка, более-менее вменяемое Memcached/Redis
Может и не факт. Ставил новый сервер для форума (php 7 и т.д.), перемудрил с редисом поломав форум (установив phpredis в нагрузку к серверу и моду), заменил пока на файловый кеш и получил прирост скорости загрузки в 0,3 с. Так к чему это я... кеширование вещь сугубо индивидуальная и подбирать нужно под конкретную задачу.
 
Может и не факт
Факт. Причем редис для посещаемых крупных форумов, среднестатистическому мемкеша с головой. Это стабильные, отработанные решения. Файловый же кеш - это худшее, что можно придумать по одной простой причине - дисковые операции самые дорогостоящие и медленные.
 
Сложно не согласиться :)
 
Сложно не согласиться :)
Основная задача кеширования - это экономия ресурсов. Т.е, если на пальцах, замена ресурсоемкой операции на менее ресурсоемкую, например, вместо хранения сессии в mysql, ложить сесиию в мемкеш. Отсюда и танцуем.
Косвенно, о кешировании как таковом, можно судить по числу запросов к mysql. Ну а на самом деле, судить о кешировании можно по разнице в потребляемых ресурсах до и во время кеширования, чем больше разница - тем эффективней выбранная стратегия и наоборот. И все это при определенных условиях, так как тот же файловый кеш при 5 и 5к онлайна будет вести тебя совершенно по-разному.
А время генерации страницы - это как средняя температура по больнице.
 
Последнее редактирование:
Подключил в конфиге memcached, форум открывается, но визуально я не заметил особого ускорения. У хостера memcached работает.
Можно как-то удостовериться в работе кеша?
 
Постом выше написано же
 
Постом выше написано же
Я не про время генерации страницы. У меня после банального ф5 картинки заново загружаются (сначала пустое место, потом появляется изображение). При работающем кешировании такого быть не должно, насколько я понимаю
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу