DNS Prefetch es una técnica de optimización mediante la cual el navegador anticipa el clic del usuario y ejecuta de antemano la resolución DNS (conversión del nombre de dominio a dirección IP) del dominio de destino. Cuando el usuario finalmente hace clic, la resolución ya está completada, así que la carga empieza antes y se ahorra el tiempo que habría llevado esa consulta. Cuánto se ahorra depende de la conexión y de si la respuesta ya estaba en caché.
Lo que tarda la resolución DNS depende de la calidad de la conexión y de si la respuesta ya está en caché, y en conexiones móviles suele ser mayor. DNS Prefetch adelanta esa espera antes del clic. Basta con añadir <link rel="dns-prefetch" href="https://example.com/"> dentro del <head> del HTML, indicando en href una URL con esquema.
Esta técnica es útil para mejorar la velocidad de redirección de las URL acortadas. Al hacer clic en una URL corta, primero se resuelve el DNS del servicio de acortamiento y luego el del dominio de destino. Si el dominio de destino ya se ha resuelto previamente mediante prefetch, se omite la segunda resolución y la experiencia percibida mejora.
Tecnologías relacionadas incluyen preconnect (resolución DNS + conexión TCP + handshake TLS por adelantado), prefetch (descarga anticipada del recurso completo) y prerender (renderizado anticipado de toda la página, hoy en desuso: la carga especulativa a nivel de página se indica con la Speculation Rules API). En cuanto al equilibrio entre consumo de recursos y beneficio, dns-prefetch es la opción más ligera y con menos efectos secundarios, por lo que se puede usar de forma generosa en páginas con muchos enlaces externos.
Como precaución, DNS Prefetch incrementa las peticiones al servidor DNS. Si se configura para todos los enlaces externos de una página, la carga sobre el servidor DNS aumenta, por lo que conviene limitarlo a los destinos más importantes. Además, dns-prefetch solo resulta útil con dominios de otro origen: el dominio propio ya está resuelto cuando el navegador lee la indicación, así que no aporta nada. Si usas preconnect, sigue mereciendo la pena añadir dns-prefetch para el mismo dominio, porque los navegadores que no lo admiten al menos adelantarán la consulta DNS.