Ускоряем работу сайта с помощью серверного кеширования

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

Что можно кешировать?

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

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

«Фрагментарное кеширование» — наиболее распространённый тип кэширования — сохраняются отдельные блоки страниц, которые одинаковы для большой группы пользователей. Из интересных разновидностей — многоуровневое кеширование (по типу матрёшки), когда кешируются вложенные друг в друга фрагменты, например, страница каталога товаров и карточки каждого отдельного товара.

«Кэширование результатов запросов к БД» и «Кэширование результатов вычислений» — кеширование данных, получаемых в результате сложных вычислений или выборок из БД, может очень серьёзно ускорить приложение. В частности, это активно используется задач по обработке графики и для формирования аналитических отчётов — сложные вычисления часто занимают достаточно продолжительное время и требуют большого количества ресурсов, поэтому проще производить обработку данных заранее в фоновом режиме и хранить до момента, пока они не потребуются.

Преимущества кеширования

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

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

Как кешировать?

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