Распараллеленная загрузка ресурсов и скорость поиска DNS - PullRequest
2 голосов
/ 28 июля 2010

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

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

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

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

1 голос
/ 01 августа 2010

Существует несколько способов сократить время загрузки 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 для ваших серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...