CNAMES медленно?
Я использую CNAME вместе с S3/CloudFront для обслуживания некоторых статических файлов, таких как js, css, images и т.д.
Я делаю это, чтобы сделать ведро URL-адресом довольно и потому, что я думаю, что лучше всего настроить таргетинг на мой сайт, и в случае, если в будущем я захочу переместить эти файлы, изменение должно быть прозрачным.
Сегодня, читая блоги, я видел, как некоторые CNAMEs злы для скорости.
Итак, что об этом думать?
Ответы
Ответ 1
CNAMES добавляет другой уровень косвенности, используя поиск DNS, поэтому некоторые штрафы будут понесены. Однако, как только IP-адрес был просмотрен через DNS, он должен оставаться кэшированным, и штраф для этого клиента больше не должен появляться.
Не забудьте установить время истечения срока действия в вашей записи DNS, и вы не увидите никакой видимой задержки.
Ответ 2
Как и в других ответах, использование CNAME должно приводить к очень минимальной дополнительной задержке разрешения DNS, и только если результат не находится в кэше рекурсивного DNS-сервера.
Обратите внимание, что клиенты DNS обычно не запрашивают явно записи CNAME. Обычно они будут запрашивать любой тип записи, который им действительно нужен, - для веб-браузера, который будет записывать A
или AAAA
.
Это задача восходящих серверов признать, что запрашиваемое имя домена содержит запись CNAME, а затем искать и возвращать целевой результат. В этом случае как запись CNAME, так и требуемый результат возвращаются в разделе ответов ответа DNS (а не в разделе "Дополнительно", как кто-то ответил).
Для оптимальной производительности лучше всего, чтобы цель CNAME была размещена на том же самом авторитетном DNS-сервере, что и имя домена, которое содержит CNAME, чтобы разрешение CNAME можно было выполнить без дальнейших запросов DNS.
Ответ 3
Влияние использования CNAME в большинстве случаев очень низкое.
Формат ответа DNS позволяет серверу помещать в сообщение дополнительные данные, и во многих ситуациях, когда вы просматриваете запись CNAME, сервер добавляет соответствующую запись A в раздел дополнительных данных, поэтому больше не нужно искать.
Ответ 4
Одна вещь, которая должна знать CNAMES, заключается в том, что если цель CNAME не кэшируется, для нее потребуется другой поиск, как сказал Бен С.
ОДНАКО, если целью CNAME является еще один CNAME, тогда для этого потребуется YET ANOTHER lookup, ad nauseum.
Я бы предложил не указывать CNAME другому CNAME.