Прежде чем мы перейдем к конкретным шагам, которые могут помочь вам ускорить работу вашего бэкэнда, давайте определимся, что мы подразумеваем под этим понятием. В целом это все, что входит в хранение данных, включая саму базу данных и серверы - все, что помогает сделать функционирование веб-сайта таким, каким необходимо (без учета визуально взаимодействия, например, встроенный html-редактор). Для получения дополнительной информации можно почитать наши предыдущие статьи, однако обратимся к сегодняшней теме.
Шаг 1. Убедитесь, что у вас настроен обратный прокси
Это важный первый шаг. Мы используем обратный прокси под названием Varnish. Это, безусловно, самый критический и самый быстрый уровень кеша, который обслуживает большую часть анонимного трафика (посетители вышли из системы). Varnish кэширует всю страницу в памяти, поэтому возвращение ее посетителю происходит молниеносно, что очень удобно и для продвижения сайта.
Шаг 2: Расширьте TTL этого кэша
Если у вас есть большая база данных контента (в частности, в диапазоне URL-адресов более 10 000), которая меняется не очень часто, чтобы повысить частоту обращений на уровне кэширования Varnish, вы можете продлить время.
Например для сайта отзывов, как правило, в любой момент времени активными являются только несколько тысяч URL-адресов, поэтому имеет смысл интенсивно кэшировать другие страницы. Недостатком этого является то, что при внесении любых изменений в сайт, шаблон или дизайн вам придется ждать две недели, пока он не пройдет по всем адресам.
Шаг 3: Прогреть кеш
Чтобы сохранить кеш «теплым», у нас есть особый процесс, который затрагивает все URL в карте сайта. Это увеличивает вероятность того, что страница находится в кеше, когда пользователь или бот поисковой системы посещают те же самые страницы (то есть коэффициент попадания улучшается).
Как видно из приведенного ниже графика, отношение «попаданий в кэш» (зеленый) к общему количеству посещений (синий + зеленый) составляет более 93 процентов.
Шаг 4. Настройте базу данных и сосредоточьтесь на самых медленных запросах.
Здесь мы используем базу данных MySQL. При создании сайта убедитесь, что вы включили отчет о медленных запросах и проверяете его как минимум раз в квартал. Проверьте самые медленные запросы, используя EXPLAIN. При необходимости добавьте индексы и перепишите запросы, которые можно оптимизировать.
Шаг 5: HTTP заголовки
Используйте HTTP2 push для отправки ресурсов на страницу, прежде чем они будут запрошены. Просто убедитесь, что вы сначала проверяете, какие из них нужно нажать. JavaScript был хорошим вариантом для нас, но существуют и другие методики.