Публикация в группе: Otshelnik-Fm - мои работы (код, плагины, дополнения, статьи и руководства)

Категории группы: Работаем с Wp-Recall

Добавлено в закладки: 0

 Всем привет.

В 14й версии появился встроенный механизм кеширования, но помимо этого, для разработчиков появился механизм "объектного" кеширования. Описание тут
Он заключается в том, что вы сами можете выделить тяжелые участки кода и закешировать их. В этой заметке я поделюсь, как я закешировал главную страницу сайта. Загнал в один объект кеширования 7 циклов. Которые довольно тяжелые. Но в тоже время они не обновляются ежеминутно и для авторизованного пользователя отдавать их вживую - кощунство по отношению к хостингу.
Я имел на главной от 110, до 115 запросов к базе данных. Тут я отступлю и скажу что сам код не проходил рефакторинг и 7 циклов можно было сократить. Но это заняло бы у меня больше времени на оптимизацию чем кеширование.

Итак было 110 запросов в живую и 1,838 секунд на получение первого get страницы.
После кеширования получил такие результаты: запросов 32, время 0,672 секунды.

Что кешировал на главной странице и почему такой выбор? Блок автора у меня выводится в хидере, поэтому, чтобы другим пользователям отдавать его "живым" с актуальными данными пользователя - я не включил его в кэш. Футер у меня не несет ничего кроме html, его я тоже не стал кешировать. Все остальное подверглось кешированию. Т.е. Закешировал всё, кроме пользовательских данных.

Читаем статью и делаем по ней. Этот пример оттуда.

Выводом контента на главную страницу у меня занимается файл index.php
Все то что я хотел кешировать я вынес в отдельный файл include-fo-home.php и подключил его в index.php. Мне это показалось проще - чтобы не дублировать этот код если функция не пройдет проверку.

 

Смотря на код сверху вниз:
подключаем хидер
Проверяем, а включен ли у нас плагин wp-recall
Если не включен, то подключаем include-fo-home.php на 34 строке (про это дублирование я и говорил выше)
кеширование на час: new Rcl_Cache(3600)
на 22 строчке включаем буфер ob_start
и подключаем наш файл.
футер не включен в кеширование.

Механизм достаточно простой. 90% кода приведенного здесь - это из статьи по использованию кастомного кеширования.
Заметка показывает частный случай - но общий принцип показанный в ней, вам поможет начать кешировать ваши тяжелые объекты.

Здесь я не написал сброс кэша при публикации записи на сайте. Андрей это сделал ранее в своей статье.

Кэш лежит по пути /wp-content/uploads/rcl-uploads/cache/ и вы экспериментируя, можете через фтп клиент удалять его оттуда.

Спасибо Андрею за терпение и подсказки использования кеширования.

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

p.s. я не использовал на сайте плагины кеширования. Там ситуация такая, что кэш отдается гостям, а авторизованным пользователям отдается все та же живая версия сайта.
Но есть плагины кеширования которые и этот момент учитывают и отдают авторизованным кэш исключая некоторые динамические объекты. С такими плагинами я не разбирался - мне интересен метод от плагина wp-recall. Зачем ставить еще один плагин? wp-recall справляется, надо лишь правильно подойти к этому вопросу.

2

Автор публикации

163

Вся лента по разработке здесь: http://across-ocean.otshelnik-fm.ru/?author=1&tab=notes&gpf=2160

http://across-ocean.otshelnik-fm.ru/ - список моих работ к плагину WP-Recall

Комментарии: 997Публикации: 118Регистрация: 27-01-2013Продаж/Покупок: 4996/119