Назад | Перейти на главную страницу

Уменьшите задержку между пользователями из США с сервера ЕС

Я в рассоле. Я думал, что мой сервер находится в Канаде, но оказалось, что он находится во Франции. У меня сейчас нет времени на миграцию сервера (конечная цель - 75%, если посетители из США).

Используя тест скорости веб-сайта на pingdom, время ожидания первого байта составляет около 140 мс, когда я тестировал его из Швеции. Когда я тестирую из Калифорнии, это около 680 мс. Мне нужно попытаться уменьшить это количество, поскольку Google утверждает, что сканирование сайта выполняется медленно, и в целом большинство посетителей из США, поэтому мне нужно улучшить их опыт.

Cloudflare кэширует статические ресурсы, поэтому, хотя задержка также находится в области 600+ для css, js и изображений, они падают сразу после того, как Cloudflare выбирает файлы. Сейчас я сосредоточен на файлах php.

Я не могу использовать nginx, так как не могу сделать 100% кеш HTML через прокси. Однако я могу использовать redis для кеширования 99% HTML. Я обновился до php7, и теперь Apache работает с ним через быстрый CGI. Я сделал сайт настолько быстрым, насколько это возможно, с тяжелым кэшированием памяти и избавлением от всех неиспользуемых модулей и т.д. HTML-кеш. Однако, если я смогу избавиться от части этой 600-миллисекундной задержки, я буду на лету.

Помимо владения сервером в ЕС и США и использования балансировщика нагрузки, что я могу сделать, чтобы ускорить работу пользователей из США и избавиться от некоторых из этих требований?

Я запускаю Centos 7 с Apache 2.4 и php7 (быстрый CGI) через соединение 100 МБ на сервере во Франции. Сервер выделен с оперативной памятью 16 ГБ и 4-ядерным процессором xeon с 8 потоками @ 2,4 ГГц.

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

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

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

Даже если содержимое не может быть кэшировано, есть потенциальная выгода от установки прокси перед сервером. Прокси-сервер может быть расположен рядом с пользователями, и прокси-сервер может заранее установить https-соединение с внутренним сервером, так что пользователям нужно будет ждать только одного обратного прохода по трансатлантической ссылке, а не двух или более, необходимых, если соединение должен быть настроен, когда пользователь начинает загружать страницу.

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

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