Ускоряем работу сайта, используя быстрый и надёжный веб‑сервер nginx

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

NGINX — это сокращение от «engine x», которое правильно произносится как энжин‑икс, хотя в быту этот веб‑сервер наиболее часто называют «нгинкс». Это очень быстрый веб‑сервер, который замечательно справляется с отдачей статического контента (изображений, стилей, скриптов и прочих скачиваемых файлов), отлично подходит для проксирования запросов динамического контента, позволяя кешировать полученные от бекенда ответы.

В режиме проксирование nginx даёт существенный прирост производительности, особенно в тех случаях, когда бекендом является медленный веб‑сервер, требующий много ресурсов (apache, например).

NGINX способен работать и без бекенд‑сервера — в PHP‑проектах связка nginx + FastCGI (php-fpm) часто более производительна, нежели более классическая nginx + apache.

В ruby-проектах nginx тоже весьма популярен — как правило, именно он выступает в качестве фронтенда для рельсовых веб‑серверов Puma, Thin, Unicorn, Rainbows, Passenger.

Основные функции веб‑сервера:

  • обработка запросов статических и индексных файлов
  • проксирование запросов с кешированием и без
  • простое распределение нагрузки и отказоустойчивость
  • поддержка FastCGI, серверов Memcached и хранилищ Redis
  • сжатие (gzip)
  • byte-ranges (докачка)
  • chunked ответы
  • HTTP‑аутентификация
  • SSI‑фильтры
  • поддержка SSL

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

Веб-сервер Apache

Apache — это HTTP‑сервер. Основными достоинствами считаются надёжность и гибкость конфигурации.

системное администрирование
веб-серверы
серверное ПО
Статья опубликована в 2014 году

Серверное программное обеспечение

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

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

Быстрый поиск на сайте, используя ElasticSearch или Sphinx

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

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

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

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

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

Масштабирование баз данных — партиционирование, репликация и шардинг

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

В этой статье мы рассмотрим наиболее часто используемые способы увеличения производительности СУБД — партиционирование, репликацию и шардинг.

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

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

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

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

Браузерное или клиентское кеширование

Кэширование статических ресурсов (картинок, скриптов, стилей) и неизменяющихся страниц на стороне браузера может сэкономить время загрузки страниц, если пользователь посещает сайт многократно или при посещении просматривает несколько страниц, которые используют одинаковые ресурсы.

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

Ajax-навигация Turboliks & Wiselinks

Увеличить отзывчивость интерфейса и снизить нагрузку на сервер можно при помощи Ajax‑навигации: если не перезагружать страницу целиком, а обновлять только содержание или отдельные фрагменты, то скорость работы сайта или приложения существенно возрастёт.

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

Ленивая загрузка или загрузка по требованию на клиентской части

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

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