¿Qué debo hacer para hacer el contenido como las imágenes servidas a través de HTTPS ser almacenado en caché del lado del cliente?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Estoy usando Tomcat como servidor y de Internet Explorer 6, un navegador.Una página web en nuestra app tiene alrededor de 75 imágenes.Estamos utilizando SSL.Parece ser muy lento en cargar todo el contenido.¿Cómo puedo configurar Tomcat para que IE almacena en caché las imágenes?

¿Fue útil?

Solución

Si usted está sirviendo a una página a través de https, entonces usted tendrá que servir a todos los incluidos estático o dinámico de los recursos a través de https (ya sea desde el mismo dominio, o en otro dominio, también a través de https) para evitar una advertencia de seguridad en el navegador.

Contenido entregado a través de un canal seguro no se escriben en el disco por defecto, la mayoría de los navegadores y así vive en los navegadores de la memoria caché, que es mucho menor que el caché en el disco.Esta caché también desaparece cuando se cierra la aplicación.

Habiendo dicho todo esto, hay cosas que usted puede hacer para mejorar la cachability para SSL activos dentro de una sola configuración del navegador.Para empezar, asegúrese de que todos los bienes han razonable Caduca y encabezados Cache-Control.Si tomcat está sentado detrás de apache, a continuación, utilizar mod_expires para agregarlos.Esto evitará el navegador de tener que comprobar si la imagen ha cambiado entre las páginas

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

En segundo lugar, y esto es específico de MSIE y Apache, la mayoría de ssl en apache configs incluir en estas líneas

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

Que desactiva keepalive para TODOS MSIE agentes.En mi humilde opinión esto es demasiado conservador, el último MSIE los navegadores tienen problemas con SSL fueron 5.x y sin parches versiones de 6.0 pre SP2, ambos de los cuales son muy poco frecuentes ahora.El siguiente es más indulgente y no desactivar conexiones abiertas cuando se utiliza MSIE y SSL

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

Otros consejos

Algunos navegadores caché SSL contenido.Firefox 2.0+ no caché SSL recursos en disco por defecto (para mayor privacidad).Firefox 3+ no se caché en disco, a menos que el Cache-control:public encabezado aparece.

A fin de establecer la Caduca:encabezado correctamente y Cache-control:public.por ejemplo,

<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>

Si muchos de esos 75 imágenes son iconos o imágenes que aparecen en cada página, puedes usar CSS sprites para reducir drásticamente el número de peticiones HTTP, y por lo tanto la carga de la página más rápido:

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

75 imágenes parece mucho.Si se trata de una gran cantidad de pequeñas imágenes, hay formas de agrupación, con muchas imágenes, como uno, usted puede ver si usted puede encontrar una biblioteca que hace.También usted puede probablemente la fuerza de las imágenes que se almacenan en caché en algo como google gears.

El contenido servido a través de una conexión HTTPS nunca se almacenan en caché en el explorador.Usted no puede hacer mucho al respecto.

Generalmente, las imágenes en su sitio web no son muy sensibles y se sirven a través de HTTP por esta misma razón.

La primera respuesta es correcta que nada se almacena en la caché cuando el uso de HTTPS.Sin embargo, cuando usted construye su página web, puede considerar la posibilidad de hacer referencia a las imágenes por su individuo de la dirección URL.De esta manera usted puede especificar las imágenes, como procedente de una fuente HTTP, y será(probablemente) se caché había por el navegador.

Tal vez usted puede agregar un servidor adicional/subdominio que proporciona las imágenes sin el https?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top