2010-07-28 2 views
2

Общей методикой сокращения времени загрузки страниц является параллелизация загрузки нескольких статических ресурсов путем их извлечения из разных имен хостов (даже если все они разрешены на один и тот же сервер).
Однако браузеру необходимо выдать запрос поиска DNS для каждого из этих имен хостов, что может занять значительное время.
Можете ли вы предложить метод, с помощью которого код JavaScript может определять «на ходу» оптимальное количество хостов для параллелизации загрузки ресурсов?Параллельная загрузка ресурсов и скорость поиска DNS

+0

Записи DNS будут кэшироваться после первого раза, так что это не проблема. Является ли намерение обходить ограничение веб-сервера одновременными соединениями? –

+0

Точно (когда обход приведет к более быстрой загрузке страницы) – dpq

ответ

2

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

JavaScript плохо приспособлен для определения «оптимального» номера, поскольку он не знает, как долго будут выполняться DNS-запросы перед их выпуском.

1

Существует несколько способов сокращения времени загрузки DNS с разными именами хостов. Один трюк состоит в том, чтобы иметь другие имена хостов в разделе AR ответа DNS; например, если кто-то просит a.example.com, мы можем с пользой сказать им имена хостов DNS для b.example.com, c.example.com, d.example.com и т. д. как дополнительные записи в ответе DNS , давая им IP-адрес для a.example.com в ответе.

Это предварительное кэширование ответов для всех этих имен хостов некоторыми (но не всеми) рекурсивными DNS-серверами (по соображениям безопасности этот трюк не работает ни для одного из рекурсивных DNS-серверов, которые я реализовал, поскольку по соображениям безопасности они не слепо кэшируют записи в разделе AR ответа DNS).

Еще один трюк для минимизации поиска DNS - это иметь все имена в одном домене (все имена заканчиваются, например, example.com: a.example.com, b.example.com и т. Д.). , убедитесь, что для устранения имен не требуются какие-либо глючные записи (сделайте ваши NS-записи такими именами, как ns1.example.com и ns2.example.com, и не используйте записи CNAME), и, если ваши серверы не изменяйте IP-адреса очень часто, имеют большой TTL для записей DNS для ваших серверов.

Смежные вопросы