Я обслуживаю блог wordpress с nginx http, кэширующим более 99% запросов, со сроком жизни кеша 2 дня. Вот веб-страница с сайта. На веб-страницах довольно много изображений, поэтому они загружаются лениво. Средний размер страницы - всего 1 мб.
Средний размер ответа - 10 КБ.
С Speedcurve мой TTFB в среднем составляет 0,6 секунды.
Почему он такой высокий?
Я поддерживаю cloudflare, и все статические ресурсы, такие как JS, CSS и изображения, версируются и кэшируются из cloudflare.
Моя конфигурация nginx имеет
sendfile on;
# https://forum.nginx.org/read.php?2,280434,280434#msg-280434
tcp_nopush on;
tcp_nodelay on;
#https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-at-your-origin-with-Cloudflare
#https://www.nginx.com/blog/tuning-nginx/
keepalive_timeout 300s;
keepalive_requests 10000;
у меня тоже есть
initcwnd установлен на 10, initrwnd 10 и ipv4.tcp_slow_start_after_idle = 0
Вот отчет Cloudflare о времени отклика от CF к источнику
Вот мой webpagetest.org результаты для соединения 2G
Статический сайт также балансировка нагрузки на двух машинах. Один во Фремонте и один в Мумбаи с Cloudflare, выполняющим географическую маршрутизацию.
Почему у меня такой длинный TTFB и что я могу сделать, чтобы его уменьшить?
я повторно запустил тест из Мумбаи без ограничения пропускной способности и получил TTFB 237 мс для страницы и 7 мс для статического ресурса.
Вы ограничили тест 2G, это очень низкая пропускная способность.
Так что проблема не в веб-сайте, а в ограничениях, которые вы наложили на свой тест.
Получаете ли вы такие же результаты при пропуске Cloudflare? Что насчет того, чтобы делать ab
локально? Даже с мощным соединением я получаю TTFB ~ 200 мс. Возможно, простое соединение между Cloudflare Edge и вашим источником занимает много времени из-за расстояния.
Вы можете включить полный кеш страницы, и это сразу улучшит ваш TTFB.