Кэширование: поиск компромисса

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

 

Статический кэш подразумевает механизм, который превращает динамические страницы, формируемые в памяти вашего сервера, в статические, которые будут храниться на жестком диске вашего сервера. Доступ к сформированной странице происходит намного быстрее, чем создание каждый раз динамической страницы в памяти. Вот именно поэтому и происходит прирост скорости — сайт начинает грузиться быстрее, величина потребляемой памяти теоретически должна снижаться. Однако на практике получается не все так однозначно: постоянное обращение к диску, создание множества файлов, и потребление оперативной памяти создают существенную нагрузку на сервер. К тому же у статического кэша есть один существенный недостаток: он не реагирует на изменения, вносимую в реальном времени посетителями сайта, плагинами, скриптами, виджетами. Например, самая больная тема для статического кэша — комментарии. Комментарии вносят изменения в структуру блога. А статический кэш наоборот, создает неизменную структуру из файлов, располагающихся не в памяти, а на диске. В результате мы не видим новых комментариев, пока не сотрем кэш текущей страницы и не сформируем новый. Таким образом приходится идти на компромисс: либо отключать кэширование для комментаторов, либо периодически сбрасывать кэш. Вот тут и получается, что блогам с большим количеством комментаторов статический кэш вроде как и мешает.

Примеры плагинов статического кэширования:

  • Как увеличить скорость загрузки блога | WP-Cache
  • Как ускорить работу блога | Hyper Cache
  • Как сделать блог быстрее | Плагин WP Super Cache
  • Как ускорить работу блога | object-cache

 

Так как WordPress — система динамическая, то от статического кэширования, встроенного в нее, отказались после версии 2.3. На смену статическому кэшированию пришло динамическое — то есть кэш хранится в памяти, и только на время формирования текущей страницы. Следующий запрос кэшируется по новой. Тут большую роль начинает играть количество обращений к базе данных. Так как большинство тем и плагинов не оптимизированы, то они нещадно эксплуатируют базу данных, постоянно туда обращаясь, при чем разные плагины и части кода темы могут выуживать одни и те же данные по нескольку раз за время формирования одной страницы. Внутренний кэш WordPress в нынешнем виде, как мне кажется, совершенно не учитывает эти обращения, поэтому он практически бесполезен. Загружая страницу блога, десятки плагинов терзают базу данных, выуживая по нескольку раз из нее одни и те же данные. Неоптимизированные темы формируют запросы к базе данных, которые нагружают ее не меньше неоптимизированных плагинов. В итоге скорость работы блога падает, а нагрузка на хостинг существенно возрастает. Хостеры начинают нервничать, отключать чересчур прожорливые блоги, блогеры начинают нервничать и менять хостеров, как перчатки, а иногда и переходят на более дорогие тарифные планы, по условиям которых для каждого блога выделяют отдельный виртуальный сервер с бо́льшими мощностями. Поначалу блог начинает дышать, но со временем, опять накопив большое количество посетителей, начинает тормозить. В этой ситуации могут помочь плагины динамического кэширования, которые кэшируют не файлы, а обращения к базе данных. То есть если из базы данных уже взяли какие-то данные, а очередной плагин их опять требует для своей работы, то он берет их не из базы, а из кэша. Но тут тоже не все однозначно. Да, количество обращений к базе данных снижается. Однако операций ввода-вывода не уменьшается, что приводит к превышению лимитов, установленных хостером. Казалось бы блог начинает работать быстрее, и даже комментарии работают почти правильно, но хостер все равно жалуется на прожорливость блога.

 

 

Так как же ускорить работу блога? К сожалению мне приходится осознать, что панацеи от прожорливой болезни WordPress пока нет. Как только блог достигает определенной отметки в посещаемости, он начинает создавать хостеру трудности. Добросовестные хостеры, заинтересованные в клиентах, вовремя модернизируют свои сервера, используя все более мощную, более производительную технику. Они предлагают клиенту оптимизировать его блог, выделяют для этого специалистов. Но, впрочем, таких хостеров — по пальцам пересчитать. Большинство же из них не особо заботятся об оптимизации своих серверов, а уж об оптимизации сайтов клиентов и подавно мечтать не приходится. Поэтому вступает в действие давно уже известная схема: спасение утопающих — дело рук самих утопающих.

Несколько советов по оптимизации блога:

  • Как уменьшить нагрузку на сервер | оптимизация .htaccess
  • Как уменьшить нагрузку на сервер, создаваемую поисковыми ботами
  • Как оптимизировать WordPress | Плагин WP-Optimize
  • Как ускорить работу блога | Web Optimizer
  • Как уменьшить нагрузку на блог: блокировка запросов на обновление и отключение автоматического управления ревизиями

 

Я все это написал, чтобы показать, что мне не достаточно опыта, и я бы с удовольствием выслушал любые ваши советы по оптимизации блога. И поправьте меня, если я в чем-то не прав.

 

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. NomadUA

    Буду ковырять блог. у меня гиперкеш отключен из-за комментариев :( нагрузка бешенная, будем пробовать способы все :)

    Ответить
    1. В Hyper Cache есть галочка — не кэшировать комментаторов. Ну а для начала начни с оптимизации через htaccess — нагрузку снимет в 2 раза.

      Ответить
      1. NomadUA

        По поводу галочки мы уже обсуждали — не помогает :( комментаторы свои сообщения минут через 30-120 видели. Попробую другими средствами в статье :) спс

        Ответить
  2. Abv

    Поставил этот плагин Clearfy 1.2.1
    После его активации в моб версии при нажатии номера телефрна, норме не предлагается к вызову, а появляется уведомление, что: «На этом веб-сайте установлена блокировка автоматического вызова»

    Как быть теперь, спасибо.

    Ответить