Usando domínios curinga para exibir imagens sem bloqueio de http

Usando domínios curinga para exibir imagens sem bloqueio de http

Li que os navegadores às vezes bloqueiam a espera por várias imagens do mesmo host e estou tentando fazer tudo o que posso para acelerar o tempo de carregamento da página.

Uma advertência: preciso servir arquivos por HTTPS.

Alguma opinião sobre se isso é viável:

  1. Configure um certificado curinga para *.domain.com.
  2. Sempre que eu precisar de uma imagem, gere um número baseado em um hash mod 5 do nome do arquivo e anexe-o a um subdomínio 'img' (por exemplo, img1.domain.com, img4.domain.com, img3.domain.com, etc. ); o hash fará com que qualquer nome de arquivo sempre use o mesmo subdomínio e, portanto, o navegador deverá ser capaz de armazenar as imagens em cache
  3. Configure um registro de host virtual dinâmico para apontar todos os img#. subdomínios para /var/www/img

Estou procurando feedback sobre este plano. Minhas preocupações são:

  1. Receberei avisos quando minha página tiver links https:// para vários subdomínios?
  2. O registro de host virtual dinâmico de que estou falando é possível?
  3. Considerando a quantidade de processamento que isso exigiria, é provável que produza algum tipo de benefício geral? Provavelmente estou calculando uma média de meia dúzia de imagens por página, com apenas metade sendo alterada a cada atualização de página.

Agradecemos antecipadamente pelo seu feedback.

Responder1

Seu esquema é possível se você tiver uma entrada DNS curinga apontando para o seu servidor web e estiver configurado para responder em todos os hosts possíveis, e você tiver um certificado SSL curinga. Eu vejo alguns problemas:

  1. Ao colocar cada imagem em um nome de host diferente, você aumenta o número de pesquisas de DNS necessárias para carregar a página.
  2. Ao colocá-los em nomes de host diferentes, você elimina a capacidade do navegador de reutilizar uma conexão TCP existente para várias imagens. Estabelecer conexões TCP é "caro" e agora terá que haver uma conexão estabelecida para CADA imagem, em vez das poucas que seriam estabelecidas e reutilizadas se as imagens estivessem sob o mesmo nome de host.

Geralmente, algumas boas práticas para imagens de serviço incluem:

  1. Carregue imagens de um nome de host diferente do domínio principal, mas mantenha-as limitadas a um ou dois outros nomes de host (pelos motivos mencionados acima).
  2. Certifique-se de que nenhum cookie seja usado nesses nomes de host (elimina a necessidade do navegador enviar os cookies junto com a solicitação.
  3. Certifique-se de que o cache esteja habilitado para o conteúdo servido nesses nomes de host (embora geralmente não seja aplicável para SSL).
  4. Combine imagens e use sprites CSS sempre que possível.
  5. Muitos outros que estiveram bemdocumentado em outro lugar.

Responder2

  1. Não, se tudo for SSL e certificado válido, você não terá problemas.
  2. Sim, pelo menos no Apache é tão trivial quanto definir uma única linhaServerAlias *.domain.com
  3. Realmente não no estado atual.

Uma solução mais adequada:

Use um servidor leve (por exemplo, lighttpd com um domínio diferente, sem nenhum módulo pesado carregado (processos leves) e use apenas um por servidor com as configurações apropriadas. Ou melhor ainda, use o nginx como servidor, pois isso irá:

  1. Não requer domínio/porta/certificado diferente.
  2. O nginx fornece o conteúdo estático e atua como um servidor proxy reverso para as solicitações 'dinâmicas' ao seu servidor original e mais pesado, que é executado localmente em outra porta/ip ou possivelmente em outro servidor, sua escolha
  3. defina as configurações apropriadas no nginx (como keepalive, trabalhadores etc.)
  4. não tem problema em servir HTTPS

informação relacionada