руслан белый

Я вебмастер с ИП. Опыт работы — 10 лет.

Помогаю бизнесу исправлять ошибки на сайтах, создавать полезный контент, делать рекламу в интернете.

В свободное время ищу ошибки на сайтах и учу делать контентники

Рассылка
Популярное

Как решить любую техническую проблему

Сколько денег надо
вложить в сайт

Как самому сделать сайт

Как выбрать нишу сайта

Бесплатный аудит сайта

Мероприятия

Пока мероприятий нет.

Кэширование страниц в Вордпресс

Друзья, всем привет! На связи с вами Руслан Белый и сегодня будет теоретический пост, посвященный теме оптимизации производительности блога под управлением WordPress.

На самом деле инфа, которой я хочу с вами поделиться подходит не только для этой системы — ее можно совершенно спокойно применить к любому сайту, будь он сделан хоть на 1C-Битрикс, Joomla, Drupal или Max Site CMS — принципы везде одинаковые.

Поэтому давайте не будем долго размазывать вступление и перейдем к сути:

  1. Как ускорить свой сайт
  2. Что такое кэширование
  3. Кэширование в WordPress

Итак, если вы готовы, тогда начинаем!

Как ускорить свой сайт?

Кстати, чтобы доказать, что я вещаю не на пустом месте — вот скриншот средней скорости загрузки страниц моего сайта по версии Alexa.com:

Скорость загрузки страниц сайта webreligion.ru

И это еще не предел — я пока внедрил еще не все фишки оптимизации, которые есть у меня в запасе.

Теперь к делу. На мой взгляд существует 3 направления в которых надо работать, что бы получить максимальный эффект от оптимизации:

  1. Оптимизация шаблона блога.
  2. Оптимизация самого движка.
  3. Оптимизация сервера, на котором стоит движок.

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

Что значит частично? Это значит, что мы затронем только тему кэширования страниц, которая относится к оптимизации движка. Однако, к оптимизации движка еще относится и чистка блога от ненужных плагинов и замена их кодом, о которой мы поговорим в одной из других статей. Не пропустите.

Что такое кэширование?

Для начала дадим определение кэшу:

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

Существует огромное количество разных видов кэшей, но суть у них всех одна — ускорить некоторый процесс. Давайте рассмотрим несколько примеров.

Кэш браузера

Что такое кэш браузера?

Кэш браузера — это некоторое хранилище (технически папка на диске), в которую сохраняются все статические ресурсы страниц при их первоначальном посещении.

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

Такой подход обеспечивает очень мощное ускорение при загрузке страниц интернет ресурсов за счет значительного уменьшения числа запросов браузера к удаленному серверу для загрузки стилей, скриптов, картинок и другого статического контента.

Статический контент — это файлы содержащие скрипты и стили, а также картинки, видео, аудио, flash ролики и др.

Однако, в чем минус этого вида кэширования — в том, что однажды загрузив ресурсы с сайта, они так и остаются на какое-то время на вашем компьютере, кстати, это время можно задавать в настройках сервера в файле .htaccess.

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

Кэш сайта

Что такое кэш сайта? Прежде чем продолжать читать дальше, я рекомендую вам просмотреть первую часть статьи про установку WordPress на локальный сервер, так там рассказывается про 2 вида сайтов — статические и динамические.

Сделайте это прямо сейчас, потому что это необходимо для понимания дальнейшего материала. Прочитали? Идем тогда дальше.

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

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

Друзья, как вы думаете, можно ли соединить преимущества статических сайтов и динамических? Ответ — однозначно ДА. И в этом помогают механизмы кэширования сайта.

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

Давайте рассмотрим механизм чуточку подробнее. Представьте себе, что вы в браузере набираете адрес страницы сайта, или, что переходите на какой-то сайт с поиска.

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

Представляете сколько запросов к базе данных выполняется в этот момент? Нет, тогда возьмите вот этот код и посмотрите:

<?php echo get_num_queries(); ?> запросов за <?php timer_stop(1); ?> секунду

Я вставил вот этот код в файл footer.php и вот, что у меня получилось без плагина кэширования:

Колчиество SQL запросов при отображении одной страницы в WordPress

39 запросов! Вы представляете? А если у нас будет стоять плагин кэширования, то их будет значительно меньше!

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

Если же вебмастер использует кэширование, то, как я уже сказал ранее, запросов будет значительно меньше, потому что вам, в ответ на запрос, будет отдана статическая копия уже собранной заранее страницы.

Важно! Когда я говорю про копию страницы — это не значит, что создается копия страницы на сайте, доступная поисковикам. Это значит, что статическая копия хранится во внутренних механизмах движка и просто отдается посетителю ВМЕСТО динамической страницы. То есть дублирования контента не возникает.

Кэш в WordPress

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

Вот примеры реализации кэширования в виде плагина:

  1. Hyper Cache
  2. Super Cache
  3. Light Cache
  4. W3 Cache
  5. и др.

Пример реализации кэширования в виде библиотеки:

  1. Max Site Cache

Честно говоря, я пробовал все плагины, которые присутствуют в этом списке, но ни один из них мне не понравился. У каждого из них были какие-то недостатки, которые заставляли меня их удалять, пока я не нашел то, что мне нужно. И то, что мне нужно — это оказался плагин Quick Cache.

Данный плагин собрал в себе все преимущества своих собратьев и объединил их под единым удобным интерфейсом:

Интерфейс Quick Cache Pro

Сегодня я не буду описывать подробности настройки, так как пост теоретический и настроек там столько, что можно смело выделить под них целую статью.

Почему я выбрал Quick Cache Pro:

  1. Корректная работа в админке.
  2. Корректное кэширование страниц фидов RSS.
  3. Сжатие итогового HTML кода.
  4. Комбинирование всех css и js файлов в один.

Кратенько пробегусь по каждому пункту.

Корректная работа в админке — это значит, что для залогиненного пользователя, админа, кэширование отключается и он видит актуальные версии страниц и внешний вид блога;

Корректное кэширование страниц фидов RSS — это значит, что страницы вида //webreligion.ru/feed — не кэшируются, многие плагины их кэшируют, если их не настроить соответствующим образом;

Сжатие итогового HTML кода — это проще показать на примере — откройте исходный код этой страницы и посмотрите на него — видите — он «сжат», то есть нет никакого форматирования — все форматирование — это лишние пробелы и лишний вес;

Комбинирование всех css и js файлов в один — это значит, что когда у меня есть несколько плагинов, которые подключают на страницу js и css файлы + свои js и css файлы, которые я использую в дизайне блога, браузер посылает отдельный запрос к серверу для каждого файла. Чем больше запросов к серверу, тем медленнее грузится страница. Эта функция объединяет все файлы в один и загружает их одной пачкой.

Конечно, это только самые крутые фишки, которые отличают его от других плагинов, помимо них он обладает всеми основными достоинствами соответствующего программного обеспечения.

Кстати, существует платная и бесплатная версия плагина, я использую платную — Quick Cache Pro. Но и платная и бесплатная версии отличные.

Платная стоит 15$. В ней, конечно, много всяких фишек, но я покупал из-за 2х — это сжатие итогового HTML кода и комбинирование css и js файлов в один. В общем — рекомендую.

Общая рекомендация по работе с кэшем в WordPress

Меня частенько спрашивают, надо ли чистить кэш в WordPress и как часто? Вообще это зависит от ситуации. Если у вас много страниц, больше 200-300, я бы не рекомендовал чистить кэш очень часто. В принципе, его можно вообще не чистить, если только вы не добавляли какой-то новый виджет или другой функционал.

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

Заключение

Друзья, на этом буду заканчивать данный пост. Так как он в большей степени теоретический, то говорить, что надо что-то сделать на практике, не буду, хотя нет — выдам домашнее задание (данное задание можно выполнить только если вы используете браузер Google Chrome, так как для других браузеров такого расширения нет):

  1. Установите себе в браузер плагин Alexa Traffic Rank
  2. Посмотрите среднюю скорость загрузки страниц по версии Alexa

Важно! Данные могут сразу не отобразиться, подождите несколько дней и они точно появятся. Результаты можете написать в комментариях — если они будут большие, то обсудим вместе, что не так с вашим сайтом.

Спасибо, что остаетесь на связи.