Uso de dominios comodín para servir imágenes sin bloqueo http

Uso de dominios comodín para servir imágenes sin bloqueo http

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:

  1. Configure un certificado comodín para *.dominio.com.
  2. 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
  3. 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:

  1. ¿Recibiré advertencias cuando mi página tenga enlaces https:// a múltiples subdominios?
  2. ¿Es posible el registro dinámico de virtualhost del que estoy hablando?
  3. 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:

  1. Al colocar cada imagen en un nombre de host diferente, aumenta la cantidad de búsquedas de DNS necesarias para cargar la página.
  2. 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:

  1. 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).
  2. 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).
  3. 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).
  4. Combine imágenes y utilice sprites CSS siempre que sea posible.
  5. Muchos otros que han estado bien.documentado en otra parte.

Respuesta2

  1. No, si todo es SSL y un certificado válido, no tendrá problemas.
  2. Sí, al menos en Apache es tan trivial como establecer una sola línea.ServerAlias *.domain.com
  3. 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:

  1. No requiere ningún dominio/puerto/certificado diferente.
  2. 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
  3. establezca la configuración adecuada en nginx (como keepalive, trabajadores, etc.)
  4. no tiene problemas para servir HTTPS

información relacionada