O que devo fazer para que conteúdos como imagens veiculadas por HTTPS sejam armazenados em cache no lado do cliente?

StackOverflow https://stackoverflow.com/questions/72358

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou usando o Tomcat como servidor e o Internet Explorer 6 como navegador.Uma página da web em nosso aplicativo possui cerca de 75 imagens.Estamos usando SSL.Parece ser muito lento carregar todo o conteúdo.Como posso configurar o Tomcat para que o IE armazene as imagens em cache?

Foi útil?

Solução

Se você estiver servindo uma página por https, precisará servir todos os recursos estáticos ou dinâmicos incluídos por https (do mesmo domínio ou de outro domínio, também por https) para evitar um aviso de segurança no navegador.

O conteúdo entregue através de um canal seguro não será gravado em disco por padrão pela maioria dos navegadores e, portanto, fica no cache de memória do navegador, que é muito menor que o cache em disco.Esse cache também desaparece quando o aplicativo é encerrado.

Dito tudo isso, há coisas que você pode fazer para melhorar a capacidade de cache dos ativos SSL dentro de uma única configuração do navegador.Para começar, certifique-se de que todos os seus ativos tenham cabeçalhos Expires e Cache-Control razoáveis.Se o Tomcat estiver atrás do Apache, use mod_expires para adicioná-los.Isso evitará que o navegador tenha que verificar se a imagem mudou entre as páginas

<Location /images>
   FileEtag none
   ExpiresActive on
   ExpiresDefault "access plus 1 month"
</Location>

Em segundo lugar, e isso é específico para MSIE e Apache, a maioria das configurações SSL do Apache incluem estas linhas

SetEnvIf User-Agent ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

O que desativa o keepalive para TODOS os agentes MSIE.IMHO, isso é muito conservador, os últimos navegadores MSIE que tiveram problemas ao usar SSL foram as versões 5.x e sem patch do 6.0 pré-SP2, ambos muito incomuns agora.O seguinte é mais brando e não desativará os keepalives ao usar MSIE e SSL

BrowserMatch "MSIE [1-4]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [5-9]" ssl-unclean-shutdown

Outras dicas

Alguns navegadores armazenarão em cache o conteúdo SSL.O Firefox 2.0+ não armazena recursos SSL em disco por padrão (para maior privacidade).O Firefox 3+ não os armazena em cache no disco, a menos que o cabeçalho Cache-control:public apareça.

Então defina os Expiramentos:cabeçalho corretamente e Cache-control:public.por exemplo.

<Files ~ "\.(gif|jpe?g|png|ico|css|js|cab|jar|swf)$">
        # Expire these things
        # Three days after access time
        ExpiresDefault  "now plus 3 days"
        # This makes Firefox 3 cache images over SSL
        Header set Cache-Control public
</Files>

Se muitas dessas 75 imagens são ícones ou imagens que aparecem em todas as páginas, você pode usar sprites CSS para reduzir drasticamente o número de solicitações HTTP e assim carregar a página mais rapidamente:

http://www.alistapart.com/articles/sprites/

75 imagens parece muito.Se forem muitas imagens pequenas, existem maneiras de agrupar muitas imagens em uma só. Você pode ver se consegue encontrar uma biblioteca que faça isso.Além disso, você provavelmente pode forçar o armazenamento em cache das imagens em algo como engrenagens do Google.

Conteúdo veiculado por meio de uma conexão HTTPS nunca é armazenado em cache no navegador.Você não pode fazer muito sobre isso.

Normalmente, as imagens do seu site não são muito confidenciais e são veiculadas por HTTP exatamente por esse motivo.

A primeira resposta está correta: nada é armazenado em cache ao usar HTTPS.No entanto, ao criar sua página da web, você pode considerar referenciar as imagens por seus URLs individuais.Dessa forma, você pode especificar as imagens como originárias de uma fonte HTTP e elas (provavelmente) serão armazenadas em cache pelo navegador.

Talvez você possa adicionar um servidor/subdomínio adicional que forneça as imagens sem https?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top