dns предварительная выборка / предварительное разрешение имени хоста - насколько эффективно? - PullRequest
36 голосов
/ 11 октября 2011

Я читал о том, как это работает, но изо всех сил пытаюсь понять это.

Из того, что я могу сказать, если я установлю <link rel="dns-prefetch" href="//ajax.googleapis.com" /> в заголовке моей веб-страницы, я должен увидеть более быстрое завершение запроса, если я ссылаюсь на любые активы в этом домене. [ссылка]

Теперь есть две проблемы, которые меня сейчас беспокоят:

1) Помогает ли это только для будущих запросов страниц

Что я имею в виду, если я использую CDN Google для получения jQuery на каждой странице моего сайта добавит <link /> выше любой разницы? Или это поможет, если, скажем, я не буду ссылаться на CDN на своей домашней странице, но буду на всех других страницах? В этом втором варианте пользователь будет заходить на домашнюю страницу, разрешать и кэшировать хост DNS, готовый для загрузки на страницах моего контента.

2) Как я могу проверить эффективность этого?

Полагаю, если бы я знал ответ на этот вопрос, у меня было бы лучшее понимание проблемы 1. Я пытаюсь использовать инструменты разработчика Firebug и Chrome и наблюдаю за панелями Net и Resources, но я не вижу существенной разницы. Единственная тенденция, которую я вижу, заключается в том, что, если что-то происходит, требуется больше времени для выполнения моего запроса, когда я использую <link /> !!

Я прочитал документацию по MDN и Блогу Chromium (оба старые!), Но я все еще просто не понимаю.

Любая помощь будет оценена - спасибо!

ОБНОВЛЕНИЕ - 22.01.2013

Просто прочитайте еще немного об этой проблеме и подумайте, что я должен включить ссылки для людей с таким же вопросом. csswizardry написал отличную статью о производительности, в которой он ссылается на эту проблему и ссылается на дополнительные исследования от perfplanet . Если у кого-то есть дополнительная информация / понимание этого вопроса, пожалуйста, добавьте ответ!

Это ссылка на другой, более свежий, ТАК вопрос - надеюсь, это поможет людям найти ответы, которые они ищут.

1 Ответ

23 голосов
/ 31 октября 2011

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

Во втором случае простого удаления и добавления элемента link недостаточно для проверки эффекта предварительной выборки. Даже без элемента ссылки браузер будет сканировать hrefs, чтобы определить, какие домены нужно предварительно выбрать - тег ссылки должен указывать ему на предварительную выборку доменов в дополнение к тем, которые найдет браузер - это полезно в случае, когда вы знаете ссылку на один домен в конечном итоге перенаправляется на другой.

Один из способов увидеть эффект тега prefetch - настроить несколько сайтов. www.example.com/index.html будет содержать ссылку на www.anotherexample.com, которая, в свою очередь, будет перенаправлять на www.athirdsite.com. Если бы вы протестировали эту конфигурацию с тегом ссылки и без него, указывающим на www.athirdsite.com, и без него, вы можете увидеть, что он быстрее с тегом ссылки. Вы, скорее всего, увидите этот эффект, если используемый сервер имен имеет большую задержку.

В заключение, я бы просто позволил браузеру делать свое дело, если только у вас нет особой причины давать ему указания делать что-то еще.

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