.htaccess, YSlow y “Usar dominios sin cookies”

5 minutos de lectura

Uno de los medibles de YSlow es usar dominios libres de cookies para servir archivos estáticos.

“Cuando el navegador solicita una imagen estática y envía cookies con la solicitud, el servidor ignora las cookies. Estas cookies son tráfico de red innecesario. Para solucionar este problema, asegúrese de que los componentes estáticos se soliciten con solicitudes sin cookies. creando un subdominio y alojándolos allí.” — Yahoo YSlow

Interpreto que esto significa que podría experimentar mejoras en el rendimiento si me muevo www.ejemplo.com/imagenes a static.example.com/images.

Aunque esto es fácil de hacer, perdería la práctica capacidad dentro de mi sistema de administración de contenido (Joomla/WordPress) para hacer referencia y vincular fácilmente estas imágenes.

¿Es posible usar .htaccess para redirigir todas las solicitudes de una carpeta en particular en www.ejemplo.com a una carpeta en estático.ejemplo.com ¿en cambio? ¿Este método también engañaría al CMS para que pensara que las imágenes estaban ubicadas en las ubicaciones predeterminadas en su propio dominio?

  • Parece que el consenso es que, si bien .htaccess podría usarse para redirigir las solicitudes de www.example.com/images a static.example.com/images; la carga de trabajo disminuiría el rendimiento. La ganancia de rendimiento ocurre solo si se accede directamente a los archivos desde un dominio sin cookies en una sola solicitud. Otra idea fue usar un complemento que crea dinámicamente las referencias. Gracias a todos por el consejo.

    – Jason Pearce

    17 de septiembre de 2009 a las 12:33

¿Es posible usar .htaccess para redirigir todas las solicitudes de una carpeta en particular en www.example.com a una carpeta en static.example.com?

Posible, pero contraproducente: el cliente tendría que realizar una solicitud HTTP, obtener la respuesta de redireccionamiento y luego realizar otra solicitud HTTP.

¡Esto cuesta mucho más que la sola línea de datos de cookies guardada!

¿Este método también engañaría al CMS para que pensara que las imágenes estaban ubicadas en las ubicaciones predeterminadas en su propio dominio?

No.

Aunque esto es fácil de hacer, perdería la práctica capacidad dentro de mi sistema de administración de contenido (Joomla/WordPress) para hacer referencia y vincular fácilmente estas imágenes.

Lo que podría intentar hacer es crear un complemento en Joomla que cree dinámicamente estas referencias.

Por ejemplo, tiene un complemento que cuando ingresa {dinamic_path path} en un artículo, agrega ‘static.example.com/images’ a la ruta proporcionada. Entonces, cada vez que necesite cambiar la ruta del servidor, simplemente cambie el complemento. Para los enlaces que ya están en la base de datos, puede intentar usar phpMyAdmin para cambiarlos en esta estructura.

Todavía pierde la capacidad WYSIWYG en TinyMCE, pero es una alternativa.

  • Gracias por la idea GmonC, pero puede estar más allá de mis habilidades. ¿La gran biblioteca de complementos que tienen tanto Joomla como WordPress? Esperaba levemente encontrar algo en este sentido.

    – Jason Pearce

    17 de septiembre de 2009 a las 12:27

  • Puede buscar en el directorio de extensiones en el sitio web oficial de Joomla. Hay un complemento llamado “DirectPHP”, puede escribir un script php de 5 líneas y llamarlo desde un artículo. Pero estoy de acuerdo en que a veces solo queremos una solución que ya funcione: dado que es un cms, debería tener alguna función ya implementada. Bueno, ¡buena suerte con las otras soluciones proporcionadas!

    – GmonC

    17 de septiembre de 2009 a las 12:59

  • ATG Dynamo es un marco de aplicación web comercial (¡y muy costoso!) Que hace esto. Trabaja con imágenes en su CMS, y cuando implementa contenido, puede enviar las imágenes a un servidor web dedicado y luego generar las URL correctas en las páginas. Es una buena idea, y seguramente no tan difícil de implementar, así que me sorprende que no se haga más ampliamente.

    –Tom Anderson

    18 de julio de 2010 a las 18:05

En teoría, podría crear un dominio virtual que apunte directamente a la carpeta de imágenes, como imágenes.ejemplo.com. Luego, en su CMS (con suerte en la capa del tema) podría reemplazar cualquier ruta que apunte a la carpeta de imágenes con una ruta absoluta al subdominio.

Los redireccionamientos generarían mucho más tráfico en la red y lejos más latencia, que simplemente dejar las cosas como están.

Redirigiría la solicitud, pero el cliente seguiría enviando sus cookies al servidor, por lo que realmente no logró nada. Tendría que acceder directamente a los archivos desde un dominio que no almacena cookies para que funcione.

Lo que realmente quiere hacer es usar staticexample.com/images en lugar de static.example.com/images para que no recoja ninguna cookie en el dominio example.com que haya configurado. Si todo lo que hace son imágenes de servidor de ese dominio con un servidor Apache simple o algo así, puede configurar ese servidor para que no devuelva ni siquiera una cookie de sesión.

Las redirecciones son una muy mala idea. Las cookies causan algunos impactos en el rendimiento, pero los viajes de ida y vuelta al servidor, como una redirección, son un problema de rendimiento mucho más grave.

avatar de usuario
anuj arora

Lo hice a continuación y obtuve el éxito:

<FilesMatch "!\.(gif|jpe?g|png)$">
    php_value session.cookie_domain example.com
</FilesMatch>

Lo que significa es que si no configura imágenes en la información de las cookies. Entonces las imágenes están libres de cookies con el servidor.

  • Esto no hace lo que pidió el OP.

    – tiago

    13 de diciembre de 2012 a las 5:32

  • ¿Hay un equivalente de esto para Nginx?

    –Vince Kronlein

    1 de noviembre de 2015 a las 11:20

  • Muestra 503 para mi sitio web

    – Moxet Kan

    25 de febrero de 2016 a las 10:05

  • ¿Cómo establecer el mismo valor para Nginx?

    – himansu

    1 sep 2020 a las 17:50

¿Ha sido útil esta solución?