Полностраничное кэширование — потребность в скорости
Опубликовано: 2020-10-02
Кэширование веб-сайтов и полностраничное кэширование — это методы, позволяющие ускорить время загрузки веб-сайтов. Это очень распространенная практика, которая используется почти везде из-за огромного прироста производительности веб-сайта. Кэширование работает, делая веб-сервер намного более эффективным в выполнении своей работы. Полностраничное кэширование — это более продвинутая форма кэширования, поэтому для понимания полностраничного кэширования давайте начнем с обычного кэширования и будем исходить из него.
Магазин автозапчастей Джо — статический веб-сайт
Представьте себе Джо. Он парень, который владеет и управляет большим складом, полным автозапчастей. В передней части склада находится прилавок, куда приходят клиенты, чтобы купить его запчасти. Когда клиент приходит, чтобы купить некоторые детали, транзакция следует следующей процедуре:
- Покупатель вручает Джо список автомобильных запчастей.
- Джо приносит первую часть и кладет ее на прилавок.
- Джо приносит вторую часть и кладет ее на прилавок.
- И так до конца списка.
- Клиент платит и уходит.
Итак, как это применимо к статическому веб-сайту?
Статический веб-сайт — это тот, который не использует базы данных, PHP-скрипты или какие-либо другие программы. Подумайте о простом веб-сайте, который состоит только из HTML-страниц и изображений. Джо и его склад представляют собой части этого простого веб-сайта следующим образом:
- Склад — это физический сервер.
- Джо — это программное обеспечение веб-сервера, например Apache.
- Автозапчасти — это файлы, из которых состоит веб-сайт, например, изображения и HTML-файлы.
Процедура обслуживания этого простого сайта такова:
- Браузер запрашивает веб-страницу у Apache, работающего на сервере.
- Apache читает первый файл с диска и отправляет его в браузер.
- Apache читает второй файл с диска и отправляет его в браузер.
- И так до тех пор, пока все не наберется.
- Браузер отображает готовую веб-страницу.
Эта настройка отлично работает для небольших веб-сайтов, но быстро выходит из строя под давлением.
Джо становится занятым — кэширование спасает положение
Система Джо работает хорошо, пока он не начинает заниматься. На самом деле он настолько занят, что проводит большую часть своего времени, идя от прилавка к складу, и он не может успевать за всеми новыми клиентами.
Джо мог бы купить дополнительный склад и нанять кого-нибудь для работы там, чтобы удовлетворить дополнительный спрос. Но это дорого и не позволяет максимально использовать ресурсы, которые у него уже есть. Вместо этого Джо думает о том, как сделать свой процесс более эффективным на имеющемся у него складе.
Джо понимает, что 90 % деталей, которые он покупает для клиентов, являются одними из 10. Поэтому он решает хранить эти 10 деталей под прилавком, где он может сразу взять их, когда кто-нибудь их попросит. Теперь он может обслуживать большинство запросов клиентов прямо с прилавка, не заходя на склад. Это намного быстрее.
Кэширование делает что-то очень похожее на веб-сервере. Так же, как Джо возвращается на склад, самым медленным действием при обслуживании статических файлов является загрузка файла с устройства хранения. Что делает кэширование, так это сохраняет наиболее часто запрашиваемые файлы в оперативной памяти, где к ним можно получить доступ в тысячи раз быстрее, чем чтение их из хранилища.

Этот тип кэширования отлично подходит для изображений и других статических файлов, но WordPress — это динамический веб-сайт с PHP-скриптами и базой данных.
Введите полностраничное кэширование.
Жизнь Джо усложняется — PHP, базы данных и кэширование
Новая мастерская Toyota открывается в том же городе, что и Джо, и они используют Джо для поставки запчастей. Это отлично подходит для Джо, за исключением одной проблемы: Toyota заказывает запчасти только по номеру своей Toyota. Они дают Джо огромный каталог, чтобы он мог найти номера деталей Toyota и сопоставить их с деталями на своем складе всякий раз, когда он получает от них заказ.
Но это снова замедляет Джо.
Каждый раз, когда ему приходится искать запчасти Toyota в каталоге, это занимает у него много времени. Даже если это одна из запчастей под прилавком, он не может просто дотянуться до нее, потому что сначала ему нужно найти номер детали Toyota в каталоге. Его старая система хранения 10 наиболее востребованных деталей под прилавком по-прежнему помогает, но новый поиск в каталоге теперь является большим узким местом.
Джо снова думает об этом и находит решение. Он замечает, что большинство заказов Toyota приходится на небольшую группу. Поэтому он пишет шпаргалку с номерами наиболее распространенных деталей Toyota и соответствующих деталей и прикрепляет ее скотчем к столешнице.
Теперь ему не нужно использовать каталог для большинства заказов Toyota, он может заглянуть в шпаргалку и почти мгновенно преобразовать номер детали Toyota в деталь, которую он может получить.
Сайты WordPress имеют ту же проблему, что и Джо. WordPress создает каждую веб-страницу, когда она запрашивается браузером. HTML-страницы, которые загружает ваш браузер, не существуют, пока вы не запросите их у WordPress.
Вот как WordPress создает страницу вашего сайта:
- Браузер запрашивает веб-страницу из WordPress.
- PHP-скрипт принимает запрос и запрашивает базу данных о том, что ему нужно для создания страницы.
- База данных ищет и возвращает всю информацию процессу PHP.
- Сценарий PHP создает страницу с этой информацией и отправляет ее в браузер.
Это большая работа, и именно поэтому некэшированные сайты WordPress требуют во много раз больше ресурсов компьютера, чем статические сайты.
Как и Джо, ваш сайт WordPress очень часто получает запросы на одни и те же страницы, например, на целевую страницу вашего сайта, поскольку эта страница обслуживается каждый раз, когда приходит новый посетитель. В настройках без кэширования WordPress должен обрабатывать этот запрос с помощью PHP-скриптов и делать запросы к базе данных для каждого посетителя, даже если он каждый раз создает одну и ту же страницу.
Это приводит к большому количеству дублированной работы.
Полностраничное кэширование решает эту проблему. Он замечает, что определенный запрос и сгенерированная страница всегда одинаковы, поэтому кэширует копию страницы в ОЗУ. Он также хранит шпаргалку запросов, которые создали эти страницы, поэтому, когда посетитель запрашивает страницу, которую он сгенерировал, прежде чем он обслуживает ее непосредственно из ОЗУ, а не создает ее повторно.
Это значительно снижает нагрузку на веб-сервер за счет обхода многих процессов PHP и поиска в базе данных и обслуживания ранее созданных страниц непосредственно из ОЗУ. Это может дать вам динамический веб-сайт WordPress, который почти так же эффективен, как статический веб-сайт.
Кэширование и полностраничное кэширование — это превосходные технологии, которые используют ресурсы вашего веб-сервера, чтобы максимизировать эффективность вашего веб-сервера и предоставить вам быстрый сайт WordPress.