web-dev-qa-db-fra.com

HTML: les images sont toujours rechargées à partir du serveur

Je constate que les images de mes pages Web sont toujours chargées à partir de mon serveur, même si elles ne changent jamais. Comme ce sont des images et non des pages, je ne peux pas inclure de date d'expiration pour elles. Comment puis-je dire aux navigateurs d'éviter de recharger leurs images?

Mise à jour:
Dans PHP j'ai essayé d'utiliser ceci:

  header ("ExpiresByType image/gif \"modification plus 10 minutes\"");

mais cela provoque une erreur de serveur interne.

1
Loki

Votre en-tête est incorrect. Ici est de la documentation. Il devrait être Expires comme dans:

 header("Expires: Thu, 30 May 2013 11:26:00 GMT");

Vous le générez généralement dans PHP comme ceci:

 header('Expires: '.date('D, d M Y H:i:s', time() + 60*10).' GMT');

Il n'est pas nécessaire de mettre un type car ce n'est pas pertinent. L'en-tête s'applique simplement au résultat que vous servez. Vous pouvez également utiliser le en-tête max-age à la place :

header('Cache-Control: max-age=600');
4
Itai

ExpiresByType est une directive Apache, pas PHP. En règle générale, vous placerez ceci dans un fichier .htaccess situé dans le même dossier que les images (ou dans le vhost):

ExpiresByType image/gif "modification plus 10 minutes"

Le module Apache mod_expires doit être activé pour que cela fonctionne.

2
Tim Fountain