Ускоряем работу сайта, используя быстрый и надёжный веб‑сервер 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‑сервер. Основными достоинствами считаются надёжность и гибкость конфигурации.
Серверное программное обеспечение
На серверах устанавливается программное обеспечение, которое требуется для работы сайта и других служб домена, для обслуживания и мониторинга, а также для защиты от взлома и устойчивости к нагрузкам.
Быстрый поиск на сайте, используя ElasticSearch или Sphinx
Sphinx и ElasticSearch — это поисковые «движки», которые обеспечивают более быстрый поиск и фильтрацию по сравнению с реляционными базами данных, а также обеспечивают возможность использования многих полезных функций поиска, например, учитывают морфологию языка, осуществляют фасеточный поиск, работают со стоп‑словами, обеспечивают выборочную индексацию и позволяют производить настройку формулы определения релевантности документов.
Ускоряем работу сайта при помощи кеширования на базе Memcached
Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб‑приложения.
Масштабирование баз данных — партиционирование, репликация и шардинг
СУБД — это очень часто «узкое место» в производительности веб‑приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование.
В этой статье мы рассмотрим наиболее часто используемые способы увеличения производительности СУБД — партиционирование, репликацию и шардинг.
Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Браузерное или клиентское кеширование
Кэширование статических ресурсов (картинок, скриптов, стилей) и неизменяющихся страниц на стороне браузера может сэкономить время загрузки страниц, если пользователь посещает сайт многократно или при посещении просматривает несколько страниц, которые используют одинаковые ресурсы.
Ajax-навигация Turboliks & Wiselinks
Увеличить отзывчивость интерфейса и снизить нагрузку на сервер можно при помощи Ajax‑навигации: если не перезагружать страницу целиком, а обновлять только содержание или отдельные фрагменты, то скорость работы сайта или приложения существенно возрастёт.
Ленивая загрузка или загрузка по требованию на клиентской части
Бывает так, что некоторое содержание страницы нужно не всем или не всегда, но на генерацию этого материала или для его передачи тратится много ресурсов. В этом случае имеет смысл сделать загрузку «ленивой», то есть не генерировать и не загружать в браузер информацию до тех пор, пока она не понадобится.