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:
- Configure um certificado curinga para *.domain.com.
- 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
- 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:
- Receberei avisos quando minha página tiver links https:// para vários subdomínios?
- O registro de host virtual dinâmico de que estou falando é possível?
- 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:
- 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.
- 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:
- 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).
- 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.
- 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).
- Combine imagens e use sprites CSS sempre que possível.
- Muitos outros que estiveram bemdocumentado em outro lugar.
Responder2
- Não, se tudo for SSL e certificado válido, você não terá problemas.
- Sim, pelo menos no Apache é tão trivial quanto definir uma única linha
ServerAlias *.domain.com
- 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á:
- Não requer domínio/porta/certificado diferente.
- 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
- defina as configurações apropriadas no nginx (como keepalive, trabalhadores etc.)
- não tem problema em servir HTTPS