Быстрее-легче-стабильнее или “немного” о Wp-Super-Cache.

Почему-то, как мне показалось, довольно тихо прошло появление очередного «всесильного всемогущего сокращающего время загрузки и нагрузку на сервер» плагина WP-Super-Cache, а ведь за бугром о нём только ленивый не писал и даже успели отDiggать страницу плагина почти тысячу раз. Поэтому, думаю, стоит всё же приглядеться и пощупать это чудо программерской мысли.

Итак, что же может этот плагин, для чего/кого он предназначен и чем лучше аналогичных стандартных и не очень средств кэширования?


Введение
Большинству пользователей WordPress’а известен прекрасный плагин WP-Cache 2. Он кэширует страницы блога и отдаёт их по запросу без обращения к базе данных. Несмотря на это, всё же приходится подгружать определенный php-код, чтобы обслуживать уже кэшированные страницы, чтобы там не говорили на странице о wp-cache (прародитель wp-cache2)

WP Super Cache действует по другому принципу. После установки, создаются html файлы, и они отдаются браузеру без единого вызова php. Насколько быстро ваш сервер отдаёт картинки? Почти так же быстро он будет выдавать и кэшированные страницы. Если вашему сайту ежедневно приходится справляться с массированным потоком посетителей или периодически испытывать Дигг-эффект, то этот плагин для вас.

Как оно работает то?
Как обычно действуют люди, подготавливая свой сайт к массовому паломничеству с дигга? Они в ручную сохраняют копию страницы, которая теоретически будет генерить основной траффик, и помещают её в папку соответствующую пермалинку. Этот метод помогает серверу выдерживать большие нагрузки и не «умирать», но эффективность его напрямую зависит от возможности предсказывать потоки пользовательского интереса к страницам. Сам по себе WP-Cache хоть и полезен, но в определенных ситуациях не совсем адекватен, тогда как WP Super Cache как раз и был создан, чтобы воссоздавать этот процесс автоматически.

Когда к странице обращается незалогиненый посетитель или он не оставляет комментариев, то сервер отдаёт ему статическую html-страницу из подпапки supercache, которая создаётся в cache папке WordPress. Если вы зайдёте в эту папку (например по фтп), то обнаружите точную копию своей пермалинк структуры в виде папок и отдельные html-файлы в каждой из них. Чтобы убедиться, что страница создана плагином, достаточно просмотреть её исходный код и вы обнаружите там следующую строку в самом конце <!— super cache —> или <!— super cache gz —> для сжатого варианта.

Залогиненым же пользователям или тем, кто оставит комментарий, будет показана кэшированная страница, созданная средствами стандартного WP Cache, где в конце будет значится <!— Cached page served by WP-Cache —>.

Фишки/Отличия от WP-Cache

  • Собственная система hook’ов, для более тонкой настройки кэширования (важно только разработчикам).
  • Прекрасно работает и с WordPress MU в VHOST и не-VHOST конфигурациях. Файлы каждого блога кэшируются независимо друг от друга.
  • Стандартные файлы WP-Cache разбиты на 2 части. Мета-файлы теперь располагаются в отдельной папке, что увеличивает скорость обращения к ним и определения необходимости обновления кэша.
  • Встроена заплатка для WP-Cache при работе с защищенными постами.
  • Автоматически отключает gzip-сжатие в WordPress вместо того, чтобы «умереть».
  • Улучшена работа с Akismet и иными плагинами борьбы со спамом — кэш будет обновлен, только если комментарий 100% не спам.
  • Кнопка «lock down» (защёлкнуть) — подготавливает сайт к мощному наплыву посетителей. После включения «защёлкивает» статичные кэш файлы и не удаляет их после добавления нового комментария.
  • Автоматическое внесение изменений в .htaccess (Не забудьте сохранить свой .htaccess перед установкой плагина).
  • Не кэшируются запросы с GET-параметрами.
  • Улучшенная проверка совместимости wp-cache-config.php и advanced-cache.php, если вы пользовались старой версией.
  • Улучшена поддержка Microsoft Windows.
  • Правильно работает с кэшированными страницами в ОС Red Hat/Cent или других, содержащих запись для gzip в /etc/mime.types.
  • Функция «Не кэшировать следующие адреса» теперь может использовать регулярные выражения.

Минусы

  • Если вы залогинен или оставили комментарий, вы никогда не увидите super-cache страницу. Вам всегда будет выдаваться старый-добрый WP-Cache. Это не так уж и плохо, так как большинство ваших посетителей никогда не оставляют комментарии.
  • Для работы со статическими страницами используется Mod Rewrite Апача, поэтому необходимо, чтобы он был активирован на сервере.
  • Особо динамичные части вашего сайта не будут обновляться так быстро, как хотелось бы. Например, виджет — последнии комментарии.
  • Некоторые хостинги испытывают проблемы при работе со сжатыми html-файлами, т.ч. может потребоваться дополнительная настройка.
  • Не рассчитывайте, что дешевый хостинг выдержит большой всплеск трафика, даже если страницы будут кэшированы.
  • Помните, что динамический контент, вроде того, который размещается в сайдбаре, будет обновлен только когда будет обновлена кэшированная страница. Время до обновления можно настроить, но кэшированные файлы будут удалены лишь в том случае, если у вас будет смесь из статических и динамических запросов.
  • Некоторые плагины, такие как SK2, Bad Behaviour и другие, работа которых зависит от «свежести» данных, могут работать не совсем корректно, во всяком случае, до тех пор, пока эти плагины не будут специально оптимизированны для очищения кэша в нужный момент.

(с) Автор Плагина


Это всё конечно интересно и красиво на словах, но работает ли оно в действительности? Сам я не мастер нагрузочного тестирования, поэтому приведу выкладки других людей.

Во-первых, автор плагина ставит в пример себя — после анонса Wp-Super-Cache на дигге, посещения скакнули до 4700 пользователей, что прямо скажем не мало. И вот какие графики получились — первый нагрузка на процессор, второй — посещения.
wp super cache plugin cpu graph
wp super cache plugin visits graph
Отчётливо виден момент активации кэширование (падение нагрузки на процессор), а так же приятно наблюдать, что рост посещений никак не сказывается на процессоре.

Во-вторых, некий Роберт провёл замеры производительности для 1000 запросов. Тестировал по локальной сети, на сервере (P4 — 3Ghz, 2GB RAM) поставил чистый ВордПресс и с другой машины делал запросы.

Результаты:
а) стандартный WordPress без кэша:
— время на тест — 161 сек;
— запросов в секунду — 6.21/сек
— время на 1 запрос — 161 мсек
— скорость передачи — 31.07 Kbytes/сек

б) WordPress + Super Cache:
— время на тест — 5.718750 сек;
— запросов в секунду — 174.86/сек
— время на 1 запрос — 5.719 мсек
— скорость передачи — 898.62 Kbytes/сек

в) WordPress + Super Cache + eAccelerator:
— время на тест — 2.531250 сек;
— запросов в секунду — 395.06/сек
— время на 1 запрос — 2.531 мсек
— скорость передачи — 2030.22 Kbytes/сек

Думаю, комментарии излишни.

Включил сейчас плагин на этом блоге, на пару минут для теста активировал gzip-сжатие и проверил, как реагируют браузеры. С Оперой и ФФ всё ок, а ИЕ6 как обычно отличился — предложил сохранить локально .html.gz страничку) Чтобы не пугать людей, сжатие отключил, но вообще нужно будет разобраться почему ИЕ так отреагировал.

Плагин в установке достаточно прост, особенно если следовать рекомендациям в readme :-), а вот настройка для тех, кто не видел до этого Wp-Cache2, возможно покажется непонятной. С другой стороны Wp-Super-Cache довольно специфическая вещь и не факт, что окажется востребованным.

Хотелось бы узнать — нужно ли отдельным постом расписывать установку и настройку?


Кстати, курсовая и 2 из 4 экзамены сданы на отл., что ещё немного приближает ко второму красному диплому :p
Заинтересовался я тут eAccelerator, интересно, удастся ли мне поставить его на виртуальную площадку у МастерХоста. Если да, то напишу как и что я делал.
Удачного дня и побольше Дигг-эффектов.

Быстрее-легче-стабильнее или “немного” о Wp-Super-Cache.: 43 комментария

  1. Интересно… интерсно…
    Да, хотелось бы видеть хотябы основные моменты установки, элементарщину как у всех (типа залить, зайти в админку, включить) думаю не обязательно :Ы
    Заранее спасибо :ЫЫ

  2. МЕГАВЕЩЬ!!! Поставил себе — разница по сравнению со «встроенный кэш акселератор» более чем ощутима.
    сейчас стоит «вп-супер-кэш акселератор».

    по поводу инструкции — в отличии от wp-cache2 этот плагин сам создал мне все символьные ссылки на сервере поэтому все сделал за пару минут

    после установки надо удостовериться что в wp-config.php
    присутствуют строки
    define(‘ENABLE_CACHE’,»);
    define(‘WP_CACHE’, true);

  3. Возникло только пара вопросов:
    если я у себя просмтариваю блог через Оперу даже если разлогинюсь, то создаются файлы кэша только вида wp-cache-435789475489574398754 а в структурированных папках создаются только папки но не файлы
    по поводу ИЕ6 и gzip — у меня все впорядке вроде бы (проверил в Opera, FF, IE6, IE7, Safari, links). при активации плагина создались файлы .htaccess объясняющие апачу что такое «гзип файлы и с чем их едят». может собака в этом зарыта у тебя?

  4. Немного офтоп, но может кому интересно будет. 🙂 Когда-то давно, еще во времена WordPress 1.5 был такой плагин, который реализовывал тоже кэш, но с помощью базы данных. Принцип его был таков: в таблице записей создавалось дополнительное поле, которое наполнялось уже готовой страницей. Таким образом перед отображением страницы, проверялось существует ли готовая версия и, если да, то выводилась эта страница, игнорируя все остальные запросы и команды. Скорость была вполне приличная, запросов — мизер. Правда кэширование было «вечным», поэтому приходилось извращаться и чуть ли не вручную обновлять кэш.

  5. появился еще один вопросик:
    у меня по умолчанию используются «красивые урл» как того требует этот плагин. при обновлении настроек плагина перезаписывается htaccess и все работает нормально, но также у меня «последние комментарии» выводят ссылки вида сайт.ру/?p=*** которые при обычном режиме работы ВП автоматически переводились в правильные «красивые урл», а при включенном кэшировании просто перебрасывает на главную страницу

  6. Max, страшно представить размер БД для этого плагина) Уж лучше файликами пусть на хостинге валяется)

    Lecactus, думаю тут нужно немного пошаманить с .htaccess и настроить редирект с условием для всех /?p=***, либо сделать страничку в /last/index.php, которая при обращении делала редирект на последний пост в WP.

  7. Lecactus, WP обрастает искусственным интеллектом) О ужас! Скоро будет достаточно зайти в админку, ввести в тэги ключевые слова, выбрать категорию и он сгенерит осмысленный пост)
    *подумал о сплогах и плагинах аля Wp-o-matic*

  8. Не почувствовал большой разницы кеширования в сборке maxa и с этим плагином. Ни запросы не снизились ни время генерации.
    Хотелось быы детальных инструкций.

  9. Я кстати, на паре своих говностатейников столкнулся с другой проблемой — большая база данных. Где-то на 20К (База — 185 мег) статей архивная страница генерится около 3-х секунд. Не рассматривая вопросы этики 🙂 — что можно с этим сделать? Ведь надо ещё дождаться, пока этот WP-SuperCache сгенерит файлы…

  10. Да мы по простому, смотрим по цифрам в подвале

    без кеширования 35 запросов за 0,65 сек

    с кешем сборки wp maxa 22 запроса за 0,62сек
    с полным кешем maxa 16 запросов за 0,62 сек

    а с плагином супер кеш показал 24 запроса за 0,65 сек

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

  11. WP-Super cache вставляет свой комментарий в конец страницы. Проверьте есть ли он. Также он не работает на залогиненном юзере (работает обычный wp-cache). Ну и проверять надо не на цифрах, которые даёт ВП (они тоже кешируются), а сторонней утилитой типа apache benchmark.

  12. Именно. Время показываемое при включенном кэше — это время первой генерации страницы. А оно не может быть меньше (без использования сторонних оптимизаторов и акселераторов), чем некоторое значение, требуемое для запросов к БД.
    Второй, третий и все последующие разы страница уже не будет генерится, а будет просто выдаваться браузеру из статики, но укзаны «время/запросы» будут на момент генерации страницы.

  13. Плагин работает замечательно. Только вышеописанные «минусы» (в частности, то что он не обновляет статистику в WP-Useronline виджете) действительно мешают.

    Lecactus, а у меня в wp-config.php плагин дописал только одну строку:

    define('WP_CACHE', true); //Added by WP-Cache Manager

  14. работает вроде, пока тестирую, плагин при активации исправил файл конфига добавив нужную ему строчку, интересует вот что — у меня сборка Максима, и в ней включен «заводской» кэш, его нужно отключить?
    вот эта строчка: define(‘DISABLE_CACHE’, »); , он сейчас у меня включён наравне с данным плагином, вроде не враждуют и каждый создаёт свой собственный кэш, как будет правильно?

  15. Всем привет. Подскажите что это за «хрень» в самом низу в настройках плагина пишет: «No Adverts for Friends plugin is enabled. (requires friendsadverts.php too)»

    Я скачал этот файл загрузил к себе на сервер в папку wp-content/plugins/ сделал — update в настройках плагина «Wp-Super-Cache», а он все равно говорит что файл «requires friendsadverts.php too». Кстати если зайти по адресу допустим:

    http://newmusicstrategies.com/wp-content/plugins/friendsadverts.php

    Запрос по Гуглу на этот файл. То файл выдает ошибку:

    (Fatal error: Call to undefined function add_action() in /home/newmusic/public_html/wp-content/plugins/friendsadverts.php on line 89

    У меня он выдает такую-же ошибку когда я пытаюсь зайти на него.

    Нужно ли его устанавливать и что это вообще. Поделитесь, пожалуйста, мыслями по этому поводу.

  16. Да и еще подскажите, пожалуйста, почему внизу в настройках плагина у меня работает только «WP-Cache» а «WP-Super-Cache» стоит по нолям??? (см.ниже)

    Люди только не молчите, раз завели тему про этот плагин давайте разбираться до конца!!!

    WP-Cache
    11 cached pages
    4 expired pages

    WP-Super-Cache
    0 cached pages
    0 expired pages. (Generated 0 minutes ago. Refresh in 60 minutes. )

  17. No Adverts for Friends — плагин для настроек отображения различным группам людей. Там же по ссылке почитайте как его настраивать и использовать. Но скорее всего вам он не потребуется.

    Прямой вызов файла плагина — довольно глупое дело, т.к. в 99% случаев в файле плагина будет вызов сторонних функций движка WordPress (add_action — хук, регистрирующий функцию на определенное действие).

    Отвечая на вопрос про «почему внизу в настройках плагина у меня работает только “WP-Cache” а “WP-Super-Cache” стоит по нолям???»
    Сразу вопрос — а вы заходили на блог под обычным пользователем, не залогиненым в админку?
    И ещё один — удалили ли вы из wp-config.php декларацию WP_CACHE?

  18. Тарас, благодарю за Ваши ответы. Сейчас все работает.

    В wp-config.php у меня стоит как положено для работы плагина:

    define(‘WP_CACHE’, true);

    Никакой декларации я не удалял 🙂 Наверное потому что до этого я не устанавливал никаких плагинов для кэширования.

    ————————————————————————————

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

  19. Напишите пожалуйста подробный мануал, я поставил но не уверен что оно работает, никаких страниц в кеше не создает… где вообще надо смотреть, в wp-content/cache?

  20. Первое — на папку wp-content поставь права (CHMOD) — 777

    Второе — загрузи плагин (wp-super-cache) в папку wp-content-plugins- «wp-super-cache»

    Третье — в файле «wp-config» своего блога нужно прописать:

    define(‘WP_CACHE’, true);

    это должно стоять перед

    define(‘ABSPATH’, dirname(__FILE__).’/’);
    require_once(ABSPATH.’wp-settings.php’);
    ?>

    Четвертое — Заходи в админ панель своего блога — plugins и активизируй плагин «wp-super-cache»

    Пятое — в админ панели своего блога заходи в «Options» — «WP Super Cashe»

    Выбирай — «WP Cache and Super Cache enabled» и нажимай «Udate Status»

    Сейчас на твоем блоге устанволен и работает «WP Cache and Super Cache»

    В самом низу в настройках «wp-super-cache» есть раздел
    «Cache contents» где ты можешь смотреть сколько страниц у тебя создалось. То есть когда кто-то делает переходы по втоему сайту страницы автоматически создаются и их количесвто ты будешь видеть через «Cache contents». Ты их в любую минуту можешь удалить, если захочешь.

    Примечание. В самом низу в настройках «wp-super-cache» не активизуруй плагин —— No Adverts for Friends. После того как я нажал на «enable» на моем блоге фигня пошла какая-то. Так что не советую нажимать.

  21. Установил wp-super-cache, но почему-то пишет:

    WP-Cache

    * 0 cached pages
    * 0 expired pages

    WP-Super-Cache

    * 0 cached pages
    * 0 expired pages.

    Посещаемость на блоге более 300чел в сутки, по страницам народ активно гуляет.

  22. Есть у плагина одно значительное неудобство 🙂 Если на сайте что то меняется (новые баннеры, код страницы или контент), изменений не будет заметно, пока не сбросишь кеш. Первое время сильно парился — меняю меняю код страницы, а отображается одинаково… 🙂

  23. magus — спасибо за пошаговую инструкцию
    долго искал почему не пашет плагин — благо ты написал что
    define(’WP_CACHE’, true);
    должно стоять перед
    define(’ABSPATH’, dirname(__FILE__).’/’);
    require_once(ABSPATH.’wp-settings.php’);
    ?>

  24. 35metod, победить можно только переговорами с хостером)

    XeonN, да тут надо блог с нуля переустанавливать. Видимо база засралась и плагины тоже не все новые. Всё никак руки не дойдут)

  25. Уведомление: Снижение нагрузки на сайт - кеширование на Wordpress | 35-й метод - Бизнес и Интернет
  26. Уведомление: CMS и все о них » Снижение нагрузки на сайт – кеширование на WordPress

Добавить комментарий