Que dois-je faire pour que le contenu, tel que les images diffusées via HTTPS, soit mis en cache côté client?

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

  •  09-06-2019
  •  | 
  •  

Question

J'utilise Tomcat en tant que serveur et Internet Explorer 6 en tant que navigateur. Une page Web dans notre application contient environ 75 images. Nous utilisons SSL. Il semble être très lent au chargement de tout le contenu. Comment puis-je configurer Tomcat pour que IE mette les images en cache?

Était-ce utile?

La solution

Si vous servez une page sur https, toutes les ressources statiques ou dynamiques incluses seront également desservies sur https (soit du même domaine, soit d'un autre domaine, également via https) pour éviter un avertissement de sécurité dans le navigateur. .

Par défaut, la plupart des navigateurs n'écrivent pas le contenu fourni sur un canal sécurisé, il est donc conservé dans le cache mémoire du navigateur, qui est beaucoup plus petit que le cache sur disque. Ce cache disparaît également lorsque l'application se ferme.

Cela dit, vous pouvez faire quelque chose pour améliorer la cachabilité des actifs SSL dans un même navigateur. Pour commencer, assurez-vous que tous vos actifs ont des en-têtes Expires et Cache-Control raisonnables. Si tomcat est assis derrière apache, utilisez mod_expires pour les ajouter. Cela évitera au navigateur de vérifier si l'image a changé d'une page à l'autre

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

Deuxièmement, et cela est spécifique à MSIE et à Apache, la plupart des config apache ssl incluent ces lignes

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

Ce qui désactive Keepalive pour TOUS les agents MSIE. IMHO c'est beaucoup trop conservateur, les derniers navigateurs MSIE à avoir des problèmes avec SSL étaient les versions 5.x et non corrigées de 6.0 pre SP2, qui sont toutes les deux très rares maintenant. Ce qui suit est plus clément et ne désactivera pas la conservation lors de l’utilisation de MSIE et de SSL

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

Autres conseils

Certains navigateurs vont mettre en cache le contenu SSL. Firefox 2.0+ ne met pas en cache les ressources SSL sur le disque par défaut (pour une confidentialité accrue). Firefox 3+ ne les met pas en cache sur le disque sauf si l'en-tête Cache-control: public apparaît.

Définissez donc correctement l'en-tête Expires: et Cache-control: public. par exemple

<Files ~ "\.(gif|jpe?g|png|ico|css|js|cab|jar|swf)<*>quot;>
        # 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 bon nombre de ces 75 images sont des icônes ou des images apparaissant sur chaque page, vous pouvez utiliser des sprites CSS pour réduire considérablement le nombre de requêtes HTTP et ainsi charger la page plus rapidement:

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

75 images semble beaucoup. S'il y a beaucoup de petites images, il existe des moyens de regrouper plusieurs images en une seule. Vous pourriez peut-être trouver une bibliothèque qui le fait. Vous pouvez également forcer la mise en cache des images dans des éléments tels que google gears .

Le contenu diffusé via une connexion HTTPS n'est jamais mis en cache dans le navigateur. Vous ne pouvez pas faire grand chose à ce sujet.

Généralement, les images de votre site Web ne sont pas très sensibles et sont servies via HTTP pour cette raison même.

La première réponse est correcte: rien n’est caché lors de l’utilisation de HTTPS. Toutefois, lorsque vous créez votre page Web, vous pouvez envisager de référencer les images par leur URL individuelle. De cette façon, vous pouvez spécifier que les images proviennent d'une source HTTP et qu'elles seront (probablement) mises en cache par le navigateur.

Peut-être pouvez-vous ajouter un serveur / sous-domaine supplémentaire fournissant les images sans https?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top