Dominios sin cookies

Una de las cosas de las que últimamente se habla bastante es de los CDN y los dominios cookie-less y su influencia en el rendimiento de un sitio web. Si bien es cierto que no estoy nada de acuerdo con distribuir una web dinámica por un CDN, ya que eso destrozaría todo el sentido SEO que se le puede llegar a dar, sí que se pueden plantear soluciones para los contenidos estáticos.

Una de estas soluciones es el uso de los dominios sin cookies, que básicamente lo que son es sitios donde almacenar información que no permita recibir o enviar cookies. Y es que las imágenes, estilos o javascripts no necesitan, para nada, enviar o recibir cookies ya que no las van a saber interpretar, y quieras que no, si vas sumando bytes en las conexiones, al final del día son unos cuantos.

La primera pregunta que hay que hacerse es qué se debe elegir a la hora de plantear montar un dominio sin cookies. La idea es que sea un dominio para contenidos estáticos, es decir, imágenes, ficheros cacheables, etc; y, el siguiente planteamiento es obvio: ¿por qué no usar un subdominio? Muy sencillo, depende de cómo esté configurado un dominio o sus cookies, es posible que estas se pasen también a subdominios, por lo que, finalmente, llegamos a una conclusión: los estáticos han de estar en un dominio separado, pensado para estáticos sin cookies (y ya puestos, con compresión y otras cosas más).

Con esto tendríamos algo como que:

www.dominionormal.com/imagenes/logo.png

se convertiría en algo como:

www.dominiosincookies.com/imagenes/logo.png

La verdad es que encontrar información sobre cómo conseguir configurar un servidor web sin cookies no me ha sido nunca tarea sencilla. Supongo que otros servidores web distintos de Apache debe ser algo factible, sobretodo en los más modernos, pero en Apache las cookies vienen configuradas por defecto y no se pueden eliminar. Al menos no se pueden eliminar si no se usan algunas cosas extra.

Para poder usar esto, necesitamos el módulo de Apache mod_headers que habitualmente viene configurado y activado. Una vez eso, en el fichero de configuración de Apache, dentro del VirtualHost del dominio que hayamos decidido configurar como sin-cookies, tendremos que añadir estas dos líneas:

RequestHeader unset Cookie
Header unset Set-Cookie

Creo que son bastante claras en lo que hacen… pero, en resumen, se comen y no envían ninguna galleta.

Aun todo esto, algo que no he probado y que podría funcionar, es una configuración que podría ser parecida a esta que debería funcionar tanto en la configuración global, como en la del .htaccess, aunque como digo, no lo he podido testear.

<FilesMatch "\.(ico|gif|jpg|png|flv|pdf|mp3|js|css|xml)$">
Header set Cache-Control "max-age=2592000"
Header always unset Set-Cookie
Header unset ETag
FileETag None
</FilesMatch>

En este caso, sin necesidad de un dominio distinto, lo que el servidor hace es que cuando los ficheros que se solicitan coinciden con alguna de las extensiones que hay en la lista, ejecutaría esas líneas, que básicamente son una caché de 1 mes, eliminar cookies y activar los ETag.

Otra cosa a tener en cuenta es todo lo contrario… ¿y si necesitamos que las cookies siempre se queden un mínimo de tiempo y que no se eliminen cuando se cierra el navegador? Pues esto es tan sencillo como añadir una línea tal que así en el propio .htaccess:

CookieExpires 2592000

La cifra que acompaña son el número de segundos desde que se crea la primera vez la cookie, en este caso 2592000 corresponde a 30 días.

En fin, y creo que esto, una vez más, espero que de algunas pistas sobre cómo y qué revisar para montar algo de este estilo… sin duda algo interesante a tener en cuenta si le sumamos trabajar con CDN.

NOTA: Para los usuarios de WordPress, existe una variable global interesante que limita las cookies a sólo lo que se le diga:

define('COOKIE_DOMAIN', 'www.ejemplo.com');

NOTA: Para los que no quieran registrar un dominio, se puede usar una cosa que hay en pruebas en 2Static.it.

Categorías Javier, WPO

2 comentarios en “Dominios sin cookies”

  1. pues, he probado ponerlo en el .htacces y no parece funcionar, podrias explicar esta parte un poco mas detallada?

  2. Buen artículo, aunque lo que yo me pregunto es, ¿cómo averiguar EFECTIVAMENTE que un contenido servido desde una infraestructra X se envía al cliente sin ningún tipo de cookie?

    Nos fiamos de las cabeceras con algo tipo:

    curl -I

    o hacemos caso de YSlow, PageSpeed, red, etc?

    Saludos :)

Deja un comentario