Leí que los navegadores a veces bloquean la espera de varias imágenes del mismo host y estoy tratando de hacer todo lo posible para acelerar los tiempos de carga de la página.
Una advertencia: necesito entregar archivos a través de HTTPS.
Cualquier opinión sobre si esto es factible:
- Configure un certificado comodín para *.dominio.com.
- Siempre que necesite una imagen, genere un número basado en un hash mod 5 del nombre del archivo y agréguelo a un subdominio 'img' (por ejemplo, img1.domain.com, img4.domain.com, img3.domain.com, etc. ); el hash hará que cualquier nombre de archivo utilice siempre el mismo subdominio y, por lo tanto, el navegador debería poder almacenar en caché las imágenes
- Configure un registro de virtualhost dinámico para que apunte a todos los números de img. subdominios a /var/www/img
Estoy buscando comentarios sobre este plan. Mis preocupaciones son:
- ¿Recibiré advertencias cuando mi página tenga enlaces https:// a múltiples subdominios?
- ¿Es posible el registro dinámico de virtualhost del que estoy hablando?
- Teniendo en cuenta la cantidad de procesamiento que esto requeriría, ¿es probable que produzca algún tipo de beneficio general? Probablemente tengo un promedio de media docena de imágenes por página, y solo la mitad se cambia en cada actualización de página.
Gracias de antemano por sus comentarios.
Respuesta1
Su esquema es posible si tiene una entrada DNS comodín que apunta a su servidor web y está configurado para responder en todos los hosts posibles, y tiene un certificado SSL comodín. Aunque veo algunos problemas:
- Al colocar cada imagen en un nombre de host diferente, aumenta la cantidad de búsquedas de DNS necesarias para cargar la página.
- Al colocarlos en diferentes nombres de host, se elimina la capacidad del navegador de reutilizar una conexión TCP existente para múltiples imágenes. Establecer conexiones TCP es "caro" y ahora tendrá que haber una conexión establecida para CADA imagen en lugar de las pocas que se establecerían y reutilizarían si las imágenes estuvieran bajo el mismo nombre de host.
Generalmente, algunas buenas prácticas para imágenes de servicios incluyen:
- Cargue imágenes desde un nombre de host diferente al dominio principal, pero manténgalas limitadas a uno o dos nombres de host más (por los motivos indicados anteriormente).
- Asegúrese de que no se utilicen cookies en esos nombres de host (elimina la necesidad de que el navegador envíe las cookies junto con la solicitud).
- Asegúrese de que el almacenamiento en caché esté habilitado para el contenido servido en esos nombres de host (aunque generalmente no se aplica a SSL).
- Combine imágenes y utilice sprites CSS siempre que sea posible.
- Muchos otros que han estado bien.documentado en otra parte.
Respuesta2
- No, si todo es SSL y un certificado válido, no tendrá problemas.
- Sí, al menos en Apache es tan trivial como establecer una sola línea.
ServerAlias *.domain.com
- Realmente no en el estado actual.
Una solución más adecuada:
Use un servidor liviano (por ejemplo, lighttpd con un dominio diferente sin ningún módulo pesado cargado (procesos livianos) y use solo uno por servidor con la configuración adecuada. O incluso mejor, use nginx como servidor, ya que eso:
- No requiere ningún dominio/puerto/certificado diferente.
- nginx sirve el contenido estático y actúa como un servidor proxy inverso para las solicitudes "dinámicas" a su servidor original, más pesado, que se ejecuta localmente en otro puerto/ip de posiblemente otro servidor, su elección
- establezca la configuración adecuada en nginx (como keepalive, trabajadores, etc.)
- no tiene problemas para servir HTTPS