Сразу обращаю внимание на то, что ничего нового вы из этого поста не узнаете. Этот пост посвящен лентяям, которые по каким-то неизвестным мне причинам не хотят прочесть пару десятков строк, посвященных динамическому кешированию в документации к «WP Super Cache».
«WP Super Cache» — это плагин кеширования для Вордпресс, который позволяет существенно снизить нагрузки на сервер.
Я не буду вдаваться в подробности функционирования данного плагина. Образно говоря, плагин снижает количество динамических вычислений путем периодического пересохранения статических копий страниц сайта. Да, это очень удобно, и за счет этого плагина можно сэкономить немало средств на хостинге и его ресурсах. Я не берусь утверждать, что «WP Super Cache» лучший в своем роде, т.к. не проводил сравнительных тестов, но по-моему субъективному мнению «WP Super Cache» удобнее и проще в эксплуатации, нежели его немногочисленные аналоги.
🔥 Кстати, кто хочет получить скидку на хостинг, могут воспользоваться моим промокодом для Таймвеб.
Но не все так гладко как может показаться на первый взляд. Проблемы с использованием большинства плагинов кеширования начинаются в процессе их эксплуатации, когда владелец сайта начинает замечать, что некоторые блоки сайта обновляются очень редко, хотя по идее должны отображать актуальную информацию. Например, различные рейтинги, количество просмотров, какие-то баннеры, количество комментариев, да и сами комментарии не редко появляются на страницах сайта спустя несколько часов или даже суток. Очень часто виджеты Вордпресс с какой-то актуальной информацией начинают «опаздывать». В условиях современной интернет-конкуренции это просто недопустимо. Но как решить подобную задачу? Отключение кеширования упирается в финансы, связанные с ресурсами хостинга, увеличение периодичности сброса кеша вообще ставит под сомнение весь смысл кеширования, т.к частый сброс кеша может, наоборот, вызвать гораздо бОльшую нагрузку на сервер. Некоторые задачи можно решить с помощью JavaScript и Ajax, но, к сожалению, далеко не все. Вот тогда и приходит на помощь т.н. блочное кеширование, т.е методом включения в кешированную страницу необходимых нам динамических блоков. Я не знаю как это реализовано в «W3 Total Cache» и «WP Hyper Cache», т.к. не работаю с ними, а как это делается в «WP Super Cache» я сегодня расскажу.
До недавнего времени у плагина «WP Super Cache» существовали функции mfunc и mclude, с помощью которых можно было подключать к кешированным страницам динамические блоки. Еще в мае этого года, разработчик оповестил, что существующая реализация оставляет желать лучшего, в девелоперских версиях плагина уже реализован новый вывод через фильтры, а в версии 1.4 он и вовсе откажется от поддержки старых функций. В октябре, незадолго до релиза «WP Super Cache» 1.4, уже было подробное описание и примеры интеграции динамики. Но, к сожалению, далеко не все вебмастера следят за новостями веб-разработчиков. Во-избежании различных казусов, я все же рекомендую хоть иногда знакомиться с нововведениями перед обновлениями как плагинов, так и самой платформы Вордпресс.
Естественно, после обновления «WP Super Cache» до версии 1.4, у многих пользователей просто отвалился вывод динамических блоков либо стал работать некорректно. Как известно, многие владельцы сайтов на Вордпресс монетизируют их с помощью Сапы и других подобных ссылочных бирж. Понятное дело, доход многих веб-мастеров в связи с этим заметно просел и ко мне уже обратились несколько человек за помощью.
Как я уже говорил выше, ничего кардинально нового я вам не скажу, так как все уже придумано и без нас. Раз уж вы здесь, я предполагаю, что на вашем WordPress уже установлен «WP Super Cache» как минимум версии 1.4. Поэтому, я не буду рассказывать каким образом устанавливается и настраивается сей плагин, а перейдем сразу к настройке динамических блоков. И я сделаю это на примере кода Сапы.
Прежде всего (если у вас еще не включено), включаем поддержку динамических блоков в настройках плагина. Это делается буквально в один клик:
Затем подключаемся к вашему сайту по ФТП и в каталоге плагина «WP Super Cache» находим файл:
/wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php
Все что нужно — это внимательно прочесть комментарии к коду и октябрьский пост разработчика. Информация более чем исчерпывающая. Если по каким-то причинам вам не удается это сделать, вы можете удалить весь код из этого файла и добавить мой:
<?php define( 'DYNAMIC_OUTPUT_BUFFER_TAG', 'SAPEBLOCK' ); function dynamic_output_buffer_test( &$cachedata = 0 ) { if ( defined( 'DYNAMIC_OB_TEXT' ) ) return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, DYNAMIC_OB_TEXT, $cachedata ); ob_start(); echo date( 'H:i:s' ); // Код вывода Сапы if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'Ваш идентификатор в Sape'); } require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['charset'] = 'UTF-8'; $sape = new SAPE_client($o); unset($o); echo $sape->return_links(); $text = ob_get_contents(); ob_end_clean(); if ( $cachedata === 0 ) define( 'DYNAMIC_OB_TEXT', $text ); else return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, $text, $cachedata ); } add_cacheaction( 'wpsc_cachedata', 'dynamic_output_buffer_test' ); function dynamic_output_buffer_test_safety( $safety ) { if ( defined( 'DYNAMIC_OB_TEXT' ) ) return 1; else return 0; } add_cacheaction( 'wpsc_cachedata_safety', 'dynamic_output_buffer_test_safety' ); ?>
Обратите внимание на следующее:
SAPEBLOCK — ваш уникальный тег, на который будет реагировать фильтр и подставлять вместо него динамический код. В целях безопасности, рекомендую переименовать.
echo date( ‘H:i:s’ ) — выводит текущее время, чтобы вы могли удостовериться, что динамика действительно работает. Отображаемое время не должно быть статичным и, естественно, после каждого обновления страницы должно меняться. Если тест пройден — эту строчку можно удалить.
Вместо «Ваш идентификатор в Sape» нужно подставить непосредственно ваш идентификатор, который вы получили в Сапе. Он, как правило, имеет то же название, что и каталог в котором размещен код и ссылки Сапы в корне вашего сайта.
Дальше открываем каталог вашего активного шаблона и выбираем место где будем выводить блок ссылок. Все стандартно: если это сайдбар — sidebar.php, футер — footer.php и так далее. В нужном вам месте вставляем небольшой код. У меня он выглядит примерно так:
<?php if ( function_exists( 'dynamic_output_buffer_test' ) ) dynamic_output_buffer_test(); ?>SAPEBLOCK<?php … ?>
Где SAPEBLOCK — все тот же ваш уникальный тег, на который среагирует фильтр.
Вот собственно и все. Ничего нового, все стандартно.
Не забудьте после установки кода обязательно сбросить весь кеш.
Делаю сайты на Вордпресс с 2008 года, в том числе уникальные инструменты для решения сложных бизнес‑задач.
Подробнее
Так что обьявления залетают в кэш.
Пробывал этот плагин около 2 месяцев назад. Сейчас ищу решение.
Допустим вместо сапы имеем 5 блоков яндекс директ.
Каждый блок имеет свой код.
Все эти пять скриптов должны записоваться в один файл dinamic-cache-test.php??? Нужно ли каждому из скриптов присваивать уникальный тэг, или достаточно одного?