Cada vez que necesitamos saber la dirección IP de un dominio o subdominio tenemos que realizar una consulta a los servidores DNS, lo que significa que el usuario pierde cierto tiempo en estas peticiones.
MINIMIZAR LAS PETICIONES EXTERNAS
Categoría: Conectividad
Si queremos tener menos peticiones, claro está, hay que intentar que en tu sitio web haya la menor cantidad de peticiones a dominios distintos. Esto significa que si podemos hacer peticiones sólo a 1 o 2 dominios conseguiremos una combinación óptima en la resolución de DNS.
Si tenemos en cuenta que tenemos un dominio para los contenidos dinámicos y otro con contenidos estáticos (incluso jugando con Domain Sharding) llegaremos a esa combinación.
Para saber si es rentable incluir otros dominios a la página sólo hemos de ver que al menos se hagan 2 llamadas. Esto hace que códigos como Google Analytics o Google Adsense ralenticen la carga de sitios. Es por esto que, en estos casos (siempre que sea posible) se haga una versión de caché de aquellos elementos que son repetitivos pero sólo se llaman una vez y que se carguen desde nuestro dominio estático.
USO DE SCRIPTS ASÍNCRONOS
Categoría: Conectividad, JavaScript
Otra opción para que la carga del sitio se haga más rápida es que, aquellos scripts que se llamen desde dominios distintos se carguen de forma asíncrona. Gracias a esto conseguiremos que el tiempo de respuesta de las DNS no altere la carga de dichos scripts.
Aun así, este sistema podría hacer que, si el usuario cambia o cierra la página muy rápido, estas peticiones nunca se lleven a cabo y los scripts u otros elementos no se lleguen a ejecutar nunca.
REDUCIR EL USO DE CNAME
Categoría: Conectividad
Cuando hacemos una petición a los servidores DNS lo que buscamos en la mayoría de ocasiones es la dirección IP a la que corresponde dicho dominio o subdominio. Esto hace que podamos relacionar ese dominio o subdominio en concreto con su IP y almacenarla en la caché de DNS.
Pero en muchas ocasiones se configuran datos en las DNS como si se tratase de entradas CNAME, que no dejan de ser “alias” de otros resultados de las mismas. Esto significa que si yo hago una petición de un subdominio y me devuelve un CNAME, tendré que realizar otra petición al servidor DNS para resolver la dirección IP de ese alias.
Esto implica que el proceso vaya más lento, por lo que se recomienda reducir el uso de CNAME a aquellas entradas de direcciones IP que no podamos controlar, como podrían ser servicios que nos dan terceros.
CONFIGURACIÓN DE LOS DNS
Categoría: Conectividad
Aunque por norma general las DNS vienen configuradas por defecto, en un proyecto nuevo e importante nunca está de más configurar de forma personalizada los servidores DNS.
- TTL: El TTL es el tiempo de vida (caché) de las DNS. Teniendo en cuenta que las DNS no es algo que se actualice con frecuencia, hay que pensar en poner unos valores medianamente razonables y altos. Como mínimo hay que poner 60 minutos y no está de más plantearse incluso indicar 1 día.
- Dominios “exóticos”: Hay que tener cuidado con algunos dominios (por ejemplo los .LY) ya que se encuentran “lejos” de los usuarios finales. Estos dominios a nivel global suelen tener un TTL muy elevado (incluso 2 días) y puede haber problemas cuando el servicio falla. Además, la dependencia de los países es demasiado elevada. Los .LY tienen 2 servidores en Libia, 2 servidores en USA y 1 en Holanda, lo que hace tener mucha dependencia.
- Distribución geográfica: Una forma de mejorar las peticiones DNS es hacer una especie de CDN de DNS, y distribuirlas geográficamente.
- DNS Públicas y Privadas: En las entradas DNS se pueden incluir IPs internas y externas. Esto puede hacer que haya muchas resoluciones incorrectas. Lo mejor es separar las IPs públicas de las corporativas o privadas en distintos dominios.
- Desactivar la Recursividad: Por norma general los servidores DNS de un dominio concreto no son servidores DNS públicos, por lo que no es necesario tener activada la recursividad.
DNS PREFETCHING
Categoría: Conectividad
Una de las novedades que van presentando los distintos navegadores es el DNS prefetching. Este sistema básicamente lo que permite es anticipar las peticiones de los dominios resolviendo las DNS antes que se cargue la página o el elemento en cuestión en páginas siguientes o en elementos de la propia página.
En estos momentos los navegadores que lo permiten son Google Chrome 7+, Mozilla Firefox 3.5+, Apple Safari 5+. Internet Explorer no se ha pronunciado sobre ello y Opera parece estar trabajando en ello.
Si queremos hacer un uso manual de este sistema podemos activar la precarga desde el propio encabezado de la página, añadiendo una entrada <link>.
<link rel="dns-prefetch" href="http://www.example.com/">
Otra opción es la de activarlo o desactivarlo a lo largo de la página. Para ello podemos usar, en el lugar del cuerpo que queramos, los siguientes elementos:
<meta http-equiv="x-dns-prefetch-control" content="off">
<meta http-equiv="x-dns-prefetch-control" content="on">