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

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

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

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

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

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

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

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

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

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

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

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

Cтатьи по теме:

Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Ускоряем работу сайта при помощи кеширования на базе Memcached
Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб-приложения.
Серверные языки программирования
Серверные языки программирования нужны для реализации бизнес-логики, то есть разработчик при помощи языка программирования описывает возможные сценарии использования сайта или приложения.
CMS — коробочные системы управления сайтами
Система управления сайтом — это программный продукт, который создан для упрощения создания основных видов сайтов. Как правило, системы управления достаточно универсальны, то есть на них можно собрать что угодно: от информационного сайта до интернет-магазина или портала.
Фреймворки в веб-разработке
Фреймворки — это программные продукты, которые упрощают создание и поддержку технически сложных или нагруженных проектов. Фреймворк, как правило, содержит только базовые программные модули, а все специфичные для проекта компоненты реализуются разработчиком на их основе. Тем самым достигается не только высокая скорость разработки, но и большая производительность и надёжность решений.
Выбор между CMS и фреймворком
​Технически любой функционал может быть реализован как на CMS, так и на фреймворке. Однако некоторые проекты проще сделать на CMS, а некоторые — на фреймворке.
Рекомендации по выбору CMS и фреймворков
При выборе конкретной платформы для разработки часто возникают сложности. Бывает непросто принять взвешенное решение, в этом случае будет полезен формализованный алгоритм выбора.

Тематические технологии:

Язык программирования Ruby
Фреймворк Ruby on Rails
Язык программирования Python
Язык программирования Go
Язык программирования Elixir
Фреймворк Phoenix
Websockets
Поисковая система ElasticSearch