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

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

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

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

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

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

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

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

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

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

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

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

быстродействиебэкендвеб-разработка
Статья опубликована в 2014 году

Тематические статьи

Ускоряем работу сайта при помощи кеширования на базе Memcached

Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб‑приложения.

СУБД
быстродействие
хранение данных
NoSQL
бэкенд
веб-разработка
серверное ПО
Статья опубликована в 2014 году

Ускоряем работу сайта: используем Redis для кеширования и хранения данных

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

быстродействие
бэкенд
веб-разработка
хранение данных
СУБД
серверное ПО
Статья опубликована в 2014 году

Ускоряем работу сайта за счёт оптимизации CSS

Время загрузки и отрисовки сайта в браузере можно заметно снизить, если воспользоваться следующими советами.

быстродействие
фронтенд
CSS
веб-разработка
Статья опубликована в 2014 году

Быстродействие сайтов и веб‑приложений

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

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

быстродействие
веб-разработка
серверы
Статья опубликована в 2019 году

Увеличиваем скорость работы сайта при помощи оптимизации JavaScript

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

быстродействие
фронтенд
JavaScript
веб-разработка
Статья опубликована в 2014 году

Ускоряем работу сайта: оптимизация HTML

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

HTML
быстродействие
фронтенд
веб-разработка
Статья опубликована в 2014 году

Выбор между CMS и фреймворком

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

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

CMS
фреймворки
платформы
веб-разработка
бэкенд
Статья опубликована в 2019 году

Рекомендации по выбору CMS и фреймворков

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

  • При возможности найти готовые решения или продукты — используйте их. В большинстве случаев, оптимальная стратегия выбора: «чем проще — тем лучше».
  • Если у вас есть команда разработчиков, то прислушайтесь к их мнению. Важны как возможности самой платформы, так и наличие у команды опыта работы именно с этим технологическим стеком.
  • Заранее оцените «заточенность» выбранной платформы под ваши задачи. Не стоит на 100% доверять маркетинговым материалам вендора платформы.
CMS
платформы
фреймворки
бэкенд
веб-разработка
Статья опубликована в 2019 и обновлена в 2021 году

Отказоустойчивость сайтов и веб‑приложений

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

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

отказоустойчивость
бэкенд
веб-разработка
серверы
системное администрирование
Статья опубликована в 2019 году