♛ FORTRESS-DESIGN

Понимание внутреннего функционирования WordPress

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

Внутреннее устройство WordPress

Мы все знаем, как работать с WordPress. Все начинается с входа в панель управления, после чего следует публикация, изменение или загрузка контента, установка или обновление  необходимых плагинов, резервное копирование и так далее. Но задумывались ли вы о том, как все это работает?

Базовая основа всех сайтов — HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки»).

Конечной целью WordPress является генерация HTML-страниц, которая происходит динамически.

Ключевой термин для понимания здесь — «динамически». Термины «HTML-страница» и «веб-страница» являются синонимами. На самом базовом уровне WordPress использует PHP и базу данных SQL для хранения всех своих данных.

Таким образом, у нас есть два объекта:

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

Сюда входят:

А вот изображения, документы и другие загружаемые файлы не хранятся в базе данных WordPress. Они лежат в папке «wp_content». Давайте остановимся на этом более подробно.

Структура папок WordPress

Содержимое корневого каталога после установки WordPress

Начиная с WordPress 3.6.1 каждый дистрибутив WordPress содержит три основные папки.

Корневой каталог

Это каталог установки WordPress и всего остального (кроме базы данных). Мы будем называть это «корневым каталогом». Если WordPress установлен на серверах с общим хостингом, работающих под управлением cPanel, корневой каталог, скорее всего, является содержимым каталога  «public_html», если вы используете WordPress в своем базовом домене (например, site.com, а не site.com/folder).

Корневой каталог WordPress содержит ровно три папки:

  1. wp_content,
  2. wp_includes и
  3. wp_admin вместе с другими файлами PHP, наиболее значимым из которых является wp_config.php.

Редактируя этот файл, мы можем добавить набор основных параметров настройки WordPress, которые недоступны в панели управления WordPress. Например, мы можем отключить пост-ревизии, установить имя сайта, используемое WordPress (полезно для изменений домена), включить режим обслуживания и другое. Файл wp-config.php является очень важным файлом так как содержит важную информацию, такую ​​как учетные данные доступа к базе данных WordPress.

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

wp_includes

Эта папка содержит другие файлы и классы PHP, необходимые для основных операций WordPress. Не стоит редактировать файлы в этом каталоге.

wp_admin

Эта папка содержит файлы панели инструментов WordPress. Вы знаете, что все административные функции или функции, связанные с WordPress, такие как написание постов, модерирование комментариев, установка плагинов и тем, осуществляется через панель инструментов WordPress. Доступ разрешен только зарегистрированным пользователям и ограничен в зависимости от роли пользователя. Администратор имеет полный доступ, потом идет редактор, затем участник и, наконец, подписчик.

wp_content

Папка wp_content содержит все загруженные пользователем данные и снова делится на три директории:

  1. themes
  2. plugins
  3. uploads

Папка themes  является каталогом тем, которые установлены на вашем сайте WordPress. Вы можете установить столько тем, сколько хотите, но активной может быть только одна тема (хотя существуют некоторые плагины, которые позволяют вам активировать больше тем). Кроме того, каталог «themes» никогда не может быть пустым, так как WordPress нужна хотя бы одна тема для работы.

Аналогично, папка «plugins» используются для хранения всех плагинов, установленных на вашем сайте WordPress. В отличие от каталога тем, этот каталог может быть пустым, так как WordPress может работать без использования каких-либо плагинов. Вы вправе активировать столько плагинов, сколько хотите, но лучше устанавливайте только необходимые. Ознакомьтесь с списком самых лучших и, на мой взгляд, самых необходимых плагинов WordPress.

Все изображения (и другие медиафайлы), которые загружаются на сайт, хранятся в каталоге «uploads». Они распределенные по годам, месяцам и дням. Эта папка может считаться базой данных для всех нетекстовых данных — изображений, PDF-файлов, видео, MP3 и другого. Доступ к этой папке и вложенным также должен быть ограничен. Это можно сделать путем изменения файла .htaccess, который находится в каталоге wp_content.

Поэтому, создавая резервную копию нужно скопировать не только папки установки WordPress. Вам необходимо скопировать и базу данных и всё содержимое корневого каталога.

Анатомия запросов в WordPress

Или, как мне нравится это называть,

Что происходит, когда кто-то просматривает ваш сайт?

Когда кто-то посещает ваш сайт, WordPress динамически генерирует HTML-код (в соответствии с CSS и JS), который отображается в виде странички сайта. Вы не увидите расширение .html после URL-адреса (как вы могли видеть на некоторых старых веб-сайтах), так как это содержимое генерируется динамически.

Вот что происходит при запросе веб-страницы:

  1. Браузер посетителя запрашивает веб-страницу.
  2. Ядро WordPress (может считаться мозгом WordPress) вызывает требуемые PHP-скрипты, начиная с index.php.
  3. Затем ядро ​​WP соединяется со своей базой данных и извлекает данные (записи, страницы, комментарии и другую информацию).
  4. Затем он объединяет извлеченные данные, данные из активных в настоящее время плагинов и текущую активную тему и генерирует HTML-код «на лету» то есть «динамически».
  5. Затем он обслуживает этот динамически сгенерированный HTML-код в браузере посетителя.

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

Теперь, повторяя все эти шаги каждый раз, когда пользователь заходит на сайт все происходит по цепочке как показано на схеме. Это задача времени и ресурсов. И вполне нормальная, если ваш сайт посещает 10 человек. Но увеличьте это на 100, 1000 — вот тогда и начнется настоящая проблема. Только суперкомпьютеры смогут обрабатывать такой объем данных. А большинство сайтов WordPress размещаются всего лишь на общих серверах веб-хостинга, которые имеют, примерно одну тысяную степень мощности суперкомпьютеров.

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


Перейти к верхней панели