J’avais complètement oublié de vous en parler, et pourtant c’était prévu depuis l’article sur l’optimisation du chargement de vos pages grâce à la compression Gzip.
Toujours liée à l’optimisation de votre site Web, et à l’utilisation d’un fichier .htaccess, la mise en cache des fichiers statiques permet d’économiser du temps au chargement des fichiers ciblés.
Quelques définitions
- .htaccess
- Le fichier .htaccess vous permet de communiquer avec votre serveur (apache) dans le but d’en changer une partie des paramètres et des comportements par défaut
- Serveur Apache
- Il s’agit d’un format de serveur, il est le plus répandu dans le monde, et est utilisé par la plupart des fournisseurs d’hébergement (gratuit ou payant – Par ici pour choisir un hébergeur web compatible Apache)
- Headers
- En-tête, en anglais, il s’agit d’informations que l’on place en tête de page afin d’orienter le navigateur vers telle ou telle interprétation de la page. Par exemple, l’en-tête charset va permettre de définir le mode de lecture des caractères de la page.
- Le cache
- Il s’agit de données « enregistrées » dans un état statique sur un système. Ces données ne seront pas recalculées lors d’une requête (interrogation du serveur). Cela permet un affichage plus rapide des pages, et donc une navigation plus agréable.
Le cache navigateur
Le cache du navigateur permet de stocker les fichiers statiques directement sur le poste de l’utilisateur. C’est une technique intéressante dans le sens où elle met à profit le système de stockage de l’utilisateur (ainsi si le site est lent à s’afficher, ce sera uniquement de la faute de l’utilisateur… :p non je plaisante, bien sûr).
Cette technique est intéressante car elle diminue le nombre de requêtes effectuées par le navigateur au serveur distant (serveur sur lequel est stocké le site Web). En effet le navigateur interroge d’abord son cache pour voir s’il n’a pas le fichier en réserve avant d’interroger le serveur (dans le cas où le fichier n’est pas en cache).
Voici le code correspondant à entrer dans votre fichier .htaccess :
## contrôle du cache navigateur - Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7200 seconds"
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/svg+xml "access plus 1 week"
AddType image/x-icon .ico
ExpiresByType image/ico "access plus 1 week"
ExpiresByType image/icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType text/html "access plus 7200 seconds"
ExpiresByType application/xhtml+xml "access plus 7200 seconds"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType application/x-shockwave-flash "access plus 1 week"
</IfModule>
Comme vous pouvez le voir, nous précisons une date d’expiration pour la plupart des types de fichiers utilisés pour notre site.
L’intérêt est d’avoir une mise en cache plutôt longue, mais qui ne bloque pas non plus la mise à jour des fichiers si vous effectuez des changements de temps à autres.
Il faut trouver le juste milieu en fonction de la fréquence de vos mises à jour, et l’importance du trafic sur votre site.
Pour ajouter d’autres type MIME vous pouvez en consulter la liste sur Wikipedia.
Mise en cache, cache-control
La cache-control est un complément à l’expire-headers, il permet de gérer le comportement du cache en fonction des fichiers et du navigateur utilisé.
Toujours sur notre fichier .htaccess :
<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</FilesMatch>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</FilesMatch>
</IfModule>
Le caractère private ou public permet de définir si le stockage se fait pour tout le monde (public) ou uniquement pour les non proxys (private).
Les documents HTML et PHP ne sont pas mis longtemps en cache comme vous pouvez le constater, c’est une habitude avec les fichiers dynamiques.
De plus l’argument must-revalidate est précisé afin d’avoir un contrôle plus fin sur la version du fichier mis en cache. (si quelqu’un a de la documentation à ce sujet je suis preneur, car c’est le seul résumé que je peux offrir à l’heure actuelle)
Les ETags
Ces petites bêtes permettent de distinguer les versions de chaque document.
Ainsi le navigateur demande au serveur quelle version il a du document toto.js, le serveur lui répond et une comparaison s’effectue alors.
Si les numéros de version sont les mêmes, alors le navigateur utilise son cache, si les numéros sont différents, le navigateur récupère le fichier du serveur (et le met en cache).
C’est du moins ce que j’en ai compris.
Aussi, si vous avez programmé votre gestion de cache, ces échanges entre navigateur et serveur deviennent inutiles, leur suppression peut donc vous permettre de gagner en vitesse lors du chargement de vos pages.
Header unset ETag
FileETag none
Chez moi ça ne fonctionne pas, il semblerait qu’OVH ne gère pas les ETag, mais j’explore les forums pour trouver une réponse à cette question.
Éviter l’envoi de cookies
Chez OVH, et d’autres, les serveurs délivrent automatiquement de petits cookies avec des noms bien particuliers dépendant souvent de votre offre d’hébergement.
Ces cookies sont bien utiles dans certains cas, mais pas tout le temps.
Si votre site ne propose pas un champs de connexion avec une case « se souvenir de moi », ou un système complexe de formulaire et de session d’espace membre, peut-être que le code suivant vous servira :
Header unset Set-Cookie
Ceci pour une version « côté client », le suivant pour une action directement sur le serveur qui ne fonctionne pas toujours (dépend de son paramétrage)
RequestHeader unset Cookie
Si quelqu’un a des corrections à apporter à ce sujet, qu’il n’hésite pas à nous en faire part via un petit commentaire 🙂
Merci à Nico pour son commentaire.
Conclusion
Tout plein de codes pour vous aider à optimiser le chargement de vos pages.
Ces codes sont, bien entendu, à adapter en fonction des types de fichiers que vous utilisez, ainsi que de la fréquence de vos mises à jour et l’importance de votre trafic.
N’hésitez pas à parcourir le Web pour trouver de nombreux conseils d’optimisations, notamment certains adaptés à un système donné. (WordPress, Joomla!, etc.)
N’oubliez pas d’utiliser les commentaires sur votre fichier .htaccess pour vous y retrouver et organiser vos différents codes :
# Ceci est un commentaire sur une ligne
Si vous avez des précisions à apporter à cet article, je suis à votre écoute, l’Apache n’est pas ma spécialité 😉
Merci
Tu peux aussi ajouter le côté « Envoyer sans cookie » pour ton htaccess pour les fichiers statiques :
Header unset Set-Cookie
ça évite des requêtes inutiles.
Merci Nico, j’ai effectivement oublié cet aspect.
Je le rajoute à l’article.
Bonne continuation 😉
salut,
comment cela se passe t-il si je fais une modif sur un fichier ou une image ? y a t-il un risque que le navigateur utilise son cache plutot que le nouveau fichier ?
merci
Bonsoir,
Effectivement si le fichier .htaccess est en place et invite à mettre en cache des fichiers qui vont par la suite être modifiés, le risque que tu mentionnes est bien présent.
Si vraiment tu souhaites mettre à jour un fichier (une image dans ton code HTML par exemple), il faut que :
Dans tous les cas le nouveau fichier sera (au moins) chargé une fois que la durée de vie du cache sera atteinte.
Bonne continuation 😉
ok merci 😉
Merci pour ces explications très claires sur des paramètres assez complexes à saisir !
Bonsoir,
Pour commencer merci infiniment pour tes tutos, très bien expliqués du coup simple à comprendre.
Dans ce tutoriel on parle de mise à jour et c’est ce qui me freine à l’installer sur mon site pourtant j’en aurais bien besoin.
J’aimerais savoir de quel type de mise à jour on parle et pourquoi pas avoir un petit conseil.
Je m’explique sur mon site les visiteurs peuvent envoyer des images elles apparaissent immédiatement après l’upload un peu comme sur blog avec un page créé par image. On en reçoit une bonne 20 aine par jours. On considère un upload comme une mise à jour ou pas car si oui ca veut dire qu’elle ne s’affichera pas aux utilisateur temps que le cache n’expirera pas ?
Désolé d’avance c’est un peu long mais j’aimerais beaucoup que l’on m’éclair la dessus
Bonne soirée 😉
Bonsoir Daniel,
Merci de soulevé une telle question.
La mise en cache dans un navigateur se fait lors de la première visite d’une page, ou plus précisément lors de la première rencontre d’un fichier statique (typiquement un CSS, JS ou une image).
Dans le cas d’un hébergeur d’image, lors de la mise en ligne d’un fichier image, une page est créée mais son contenu (l’image notamment) n’existe pas encore dans le cache du navigateur du visiteur à ce moment. Il n’y a donc aucun danger, c’est même tout bénéfique puisque lors des prochaines visites de ce visiteur, celui-ci affichera l’image de son cache (qui ne devrait pas changer après mise en ligne) au lieu de la charger depuis le serveur.
Le procédé de mise en cache sera identique pour chaque visiteur d’une page d’image donnée, celui-ci chargera une première fois l’image depuis le serveur, puis la placera en cache pour la charger plus rapidement la prochaine fois, directement depuis son navigateur.
Le seul danger – si je puis dire – c’est par exemple pour la CSS de ton site.
Le visiteur l’a en cache dès sa première visite. Si jamais tu avais besoin de la modifier pour corriger un point de style, ou pour adapter ton design, la visibilité de cette mise à jour devra attendra la fin de durée de vie du cache pour un visiteur donnée.
Pour éviter cela, tu peux tromper le cache en lui faisant croire à un nouveau fichier.
Exemple du fichier de base :
<link media="all" type="text/css" href="css/styles.css" />
en renseignant une variable en fin de chemin, le navigateur croira à un nouveau fichier :
<link media="all" type="text/css" href="css/styles.css?20111204" />
Tu peux mettre la date de mise à jour du fichier, ou un paramètre au pif (la date à l’avantage d’être relativement unique…)
Comprends-tu un peu mieux le fonctionnement ?
J’ai moi-même pas mal de lacunes en terme de paramétrage serveur et fonctionnement d’un navigateur, mais j’espère avoir pu t’éclairer quelque peu.
Bonjour je voulais savoir a quel endroit coller les codes dans le htacces svp en début de ligne fin de ligne ??
Bonjour,
Je conseille en général de les mettre en fin de fichier par habitude mais ça dépend aussi bien beaucoup du contenu existant dans votre fichier.
Super merci beaucoup pour ta réponse encore un fois très clair je viens de le mettre sur mon site je testerais la vitesse demain en heure de pointe. Je me pose alors une nouvelle question pourquoi ne pas retirer le code du .htaccess lors de modification sur le site puis le remettre juste après ?
Une fois les fichiers en cache, tu as beau retirer le fichier .htaccess de ton serveur, les fichiers restent en cache sur la navigateur de l’utilisateur jusqu’à leur expiration.
Tuto très complet merci !
Plusieurs apports 😉
Selon Google (le Chef suprême ^^), il faut soit utiliser Expires, soit Cache-Control.
Source : https://developers.google.com/speed/docs/best-practices/caching?hl=fr#LeverageBrowserCaching (dernière ligne du paragraphe « Détails »).
Et il faut y coupler soit ETag, soit Last-Modified.
Aussi, pour Expires, on peut exprimer ça en minutes, mois, années…
Source : http://httpd.apache.org/docs/2.0/mod/mod_expires.html
De plus, ExpiresDefault « access plus 7200 seconds » s’applique par défaut à tout (je crois), donc je pense qu’il n’est pas nécessaire de le re-spécifier pour les fichiers html.
Un autre tuto pour éventuellement compléter le tiens : http://www.seomix.fr/guide-htaccess-performances-et-temps-de-chargement/ 😉
Merci pour l’astuce sur les cookies !
Merci Romain pour ce complément !
Il faudrait que je mette à jour ce tutoriel 🙂
Très bonne soirée.
Bonjour, et bravo pour ces explications.
Je suis Pascal de rio de janeiro!
Voilà je viens de finir mon site et je regarde un peu pour le finaliser avec la mise en cache.
J’ai une petite question :
Je viens donc de mettre des recommendationss dans un fichiers htaccess.
Il semble qu’à l’ouverture de mon site ça ouvre très rapidement…
Cependant quand je vais sur Google speed, il semble que je suis toujours à la même vitesse d’ouveture (70 %). sur 100. Et qu’il me demande de mettre en cache etc… Chose que j’ ai déjà fait!?
Peux-tu m’écrairer sil te plait ?
merci
Google Speed te signales que la mise en cache de certains médias de ta page n’est pas paramétrée ? Si le temps ne change pas c’est normal, Google Speed actualise le cache à chaque fois. Donc chargement lent.
Effectivement, j’ ai pu m’apercevoir, qu’il fallait attendre un peu pour avoir mes modification en ligne.
j’ ai pu vraiment optimisé mon site en passant par le DNS de Yotaa.com!
pratiquement du 100%.
merci pour ta réponse.
Bonjour,
j’aimerai savoir si l’on peut enlever les lignes
IfModule mod_headers.c
/IfModule mod_headers.c
si non pourquoi?
merci de votre réponse et du tutos
Belal
Bonsoir,
On peut les retirer, mais je pense que ce n’est pas judicieux puisque ces balises permettent un contrôle avant de faire une action.
« Si tel truc est activé, alors je peux l’utiliser. »
Bonne soirée.
Bonjour,
Merci pour ce tuto, j’ai mis en place dans mon .htaccess le mod_expire ainsi que le cache-control et cela à augmenter considérablement l’affichage des pages de mon annuaire.
Si cela vous intéresse :
J’ai également mis en place un cache coté serveur à l’aide du php à l’adresse suivante http://www.multiprise.net/Publications/1533-categorie-Programmation-php/1533-categorie-programmation-php-mettre-en-cache-une-page-cote-serveur.html
La vitesse des sites web à été intégré dans l’algorithme du PR Google, réduire les temps d’affichage est primordiale pour le référencement et la fréquentation des sites.
Je suis à la recherche d’un maximum d’astuces qui me permettront d’y tendre.
Cordialement
Éric SOUPET
Merci pour ces informations Eric 🙂
Bonjour, et merci Geoffrey! C’est un excellent article dans ce sens qu’il donne directement les codes à transcrire. Mais il reste un peu difficile pour les vrais débutants. Pour blogger par exemple, où faut’il coller le code, et quelle sont les personnalisations à effectuer? Merci d’avance pour votre réponse.
Bonsoir,
Je ne connais pas suffisamment Blogger pour vous répondre.
Si l’option d’édition d’un fichier htaccess n’est pas disponible, il est fort probable que vous ne puissiez pas agir sur la mise en cache des fichiers statiques.
Cependant j’ose espérer que Google ait déjà mis en place une bonne gestion du cache pour ses propres blogs…
Bonjour! Merci pour la promptitude! Je vérifie si l’option existe avec blogger, et vous ferai part des résultats de mes recherches! Merci encore!!
Bonjour,
merci pour votre tuto que je pense mettre en application.
Cependant je vais dissocier les format d’images.
En effet sur ma page principale j’ai du jpeg et du png.
Les images jpeg changent plusieurs fois par jours, alors que les icones png non.
Donc je vais mettre une ligne pour le png. et supprimer celle pour le jpef et autre.
Par contre j’ai une question : sur les valeurs de temps (600 par exemple), ça correspond aux minutes ?
Merci d’avance.
Dernière question. Si je change les png. (normalement ce n’est pas pour de suite). Peut on forcer les navigateurs a actualiser leur cache ?
Hello,
C’est en secondes 🙂
Bonne continuation.
Merci ! (un peut tard la réponse, mais entre temps j’avais regardé ailleurs)
J’ai eu un gros ralentissement sur mon site après la mise en place du code.
Du coup j’ai supprimé la mise en cache des jpeg et jpg car les images changent souvent et du coup c’est revenu à la normale.
Merci encore.
Bonjour,
Merci pour ce tutoriel très intéressant. Quelques explications sur le contenu du code auraient été les bienvenues. ^^
Dans le 8è commentaire, vous expliquez que l’on peut déjouer la mise en cache en rajoutant une variable en fin de chemin. Si cela fonctionne, pourquoi alors ne pas mettre la durée du cache très longue et modifier ce chemin lors des mises à jour ?
Merci.
Bonjour Vayel,
C’est envisageable oui.
Je n’ai pas pensé à ajouter cette information sur mon article, mais de mémoire il y a un navigateur qui ne mettrait pas le fichier en cache si un paramètre est trouvé dans l’URL. Il faudrait que je retrouve la source, j’admets ne pas avoir testé la chose.
Bonne journée.
Bonjour,
Je mets en application la « suppression » des cookies pour certains types de fichiers (les images en l’occurrence) :
<FilesMatch "\.(png|gif|jpg|jpeg)$">
Header unset Cookie
Header unset Set-Cookie
</FilesMatch>
Cependant, après avoir contrôlé (mod_headers activé) cela ne fonctionne pas. Vérification avec firebug : le cookie est toujours envoyé dans la requête http pour une image type PNG.
Cependant, quand j’omets le FilesMatch (cela s’applique donc à tout type de fichier) ça fonctionne bien (sur tous les types de fichier).
Auriez-vous une idée ?
Bonjour,
De mémoire la suppression des cookies doit se faire par domaine ou sous domaine et s’applique à l’ensemble des fichiers d’un dossier. Du coup la sélection par type de fichier ne fonctionne pas.
D’où l’utilisation d’un CDN qui distribue des fichiers statiques sans cookies.
Bonne continuation.
Ok, c’est effectivement la conclusion que j’en ai faite après quelques essais. Merci du retour.
Je comprends mieux l’utilité d’un CDN à présent si ce n’est pour multiplier les possibilités de distribution HTTP.
Bonjour lorsque je cherchais des infos pour mettre en place la compression Gzip chez 1and, j’étais tombé par hasard sur ce site très dense en ce qui concerne le htaccess:
http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html
si cela peut te servir,
cordialement
Bonjour,
Merci pour ton partage Yan !
Oui ça pourra servir à bien des gens 😉
Merci de votre aide. Très bon tutoriel ! Je n’arrivais pas à atteindre de bonnes performances pour mon site. Je n’avais pas saisi l’utilité du cache en htaccess. Grâce à vous j’ai pu atteindre une performance notée 98/100 YSlow et Google PageSpeed Insights ! Vraiment un grand bravo.
Bonjour, et merci pour cet excellent tuto. Une question : mes images sont dans un répertoire images dans lequel il y a des sous répertoires (comme images/montagne, images/plages etc…)
y-a-t-il un moyen d’indiquer la valeur ExpireByType pour l’ensemble du répertoire images (donc y compris ses sous répertoires) ?
merci
Gérard
Bonjour,
Normalement le fichier .htaccess d’un dossier traite également l’ensemble des sous-dossiers. Un fichier .htaccess d’un sous-dossier peu cependant écraser les directives de « son .htaccess parent ».
Bonne journée.
Apache n’est pas un « format », mais un serveur HTTP comme Nginx ou autre.
Bonjour également,
J’ai peut-être utilisé le terme « format » au lieu de « type » par abus de langage, mais je ne vois pas en quoi cela rend la définition complètement fausse 😉
Car au final ce n’est pas un serveur mais un logiciel sur un serveur (le serveur étant le hardware, Apache étant le software, même si souvent les deux sont confondus, aussi par abus de langage).
Merci pour cet article.
Pourquoi avoir mis le .js en private dans la partie cache-control ? (sécurité? pourquoi exactement?)
Hello Seb.
Je me souviens avoir eu du mal à comprendre cette notion, je ne sais pas si je vais arriver à la réexpliquer.
Le message de réponse envoyé par un fichier mis en cache (ou pas) est destiné à une personne (ou plutôt un client) unique et ne devrait pas provenir d’un cache partagé.
Je parle bien de l’aspect « private » là.
Par exemple un serveur proxy ne devrait pas pouvoir mettre en cache une réponse, mais le client oui. Cela permet à chacun des clients d’un même serveur proxy d’avoir un cache qui lui est propre et qui ne serait pas partagé.
Pourquoi faire cela pour du JS ?… bonne question 😀
Sans doute parce que le js ne fonctionne que du côté client.
ok. Merci tout de meme pour ta réponse 😉 Je pense pas avoir le temps de chercher des infos la dessus mais si j’en trouve, je ferai suivre.
A defaut, je vais utiliser ‘private’ (sécurité > performance).
Bonjour,
Merci pour toutes ces explications, bien content 🙂 je me demande si tout ça est encore d’actualité ?
Si je peux me permettre une remarque, il manquerais pour finir ou placer tout ça dans le fichier, il me semble bien qu’il faut respecter un certain ordre?
Bonjour,
Il n’y a pas réellement d’ordre à respecter.
La règle principale est « une instruction par ligne ».
Chaque portion de code que je fournis peut être placé l’un à la suite de l’autre sans souci.
Oui cela reste valable, nous utilisons toujours le même type de serveur depuis quelques années.
Je ne suis pas certain qu’il y ait un grand bouleversement prochainement 🙂
Bon week-end.
Bonjour à tous,
très intéressant…
Petite question : si mes images se trouvent dans un dossier /img et non pas à la racine du serveur, dois-je créer un fichier .htaccess (contenant les instructions de mise en cache des images) dans le dossier /img ou est-ce que tout mettre dans un seul .htaccess à la racine fonctionne ?
Merci merci !!
Bonjour,
Normalement le fichier racine suffit si le bon format d’image est ciblé 🙂
Bon dimanche !
Pas vraiment une amélioration mais simplement un petit plus : afin de vérifier si les modules sont actifs, le plus simple est d’afficher un phpinfo() et de recherche la ligne « Loaded Modules ».
C’est tout bête mais cela peut aider, notamment sur les mutualisés ou on à pas toujours la main sur tout (et ça peut faire bouger le support technique plus vite >:))
Très bon article en tout cas, merci.
Bonjour,
perso j’ai pas de ligne (ou rubrique) « Loaded Modules » quand j’affiche mes infos PHP (via un fichier placé en racine du site mutualisé)
PHP Version 5.3.27
Dans le cadre d un blog mode / voyage avec beaucoup de photos, des articles nouveaux tous les 3 jours, doit-on suivre les memes consignes et le meme temps de mise en cache ?
Merci !
Annais
Bonjour,
Il s’agit ici de placer les fichiers statiques en cache, fichiers que vous n’allez a priori pas éditer souvent. (CSS, images, JS, etc;)
Il est possible de mettre en cache les pages de votre blog, mais pour cela il existe des plugins qui gèrent très bien la mise à jour des pages lors de publications, donc pas de crainte non plus à avoir à ce niveau 😉
Bonne continuation.
Bonjour,
Merci pour le tuto, mais ça induit dans la confusion. Il laisse penser que le cache est un mécanisme désactivé par défaut et qu’il faut appliquer ce tuto pour en profiter dans le but d’optimiser son siteweb, alors que c’est tout à fait l inverse. le cache se gère automatiquement depuis le http1.0 . Avec le http1.1 sont venues les directives cache-control qui permettent à l’utilisateur la manipulation du cache dans le but d’invalider les ressources et non pas de les cacher (parcequ’elles le sont par défaut)
Bonjour Ahmed,
Merci pour ces précisions.
Cependant, quoi qu’il en soit et après de nombreux tests sur OVH, sans ces règles, le cache ne semble pas activé, ou pas de manière efficace.
Les outils d’analyse spécialisés retournent d’ailleurs l’erreur adéquat lorsque ces lignes sont manquantes.
Bonne journée.
Bonjour,
Merci pour votre feedback, et pour être plus précis, si l’entête du fichier chargé ne contient aucun validateur: Cache-Control (http1.1), Expires (http1.0), Last-Modified (http1.0), ETag (http1.1) , alors le cache du navigateur ne le stockera pas du tout. La configuration par défaut des serveur web, apache en l’occurrence, inclut les validateurs Last-Modified ou Etag ou bien les deux en fonction de la version http, donc il n’est pas question que le fichier ne soit pas caché, à moins qu’on les désactive dans la configuration. Et comme vous venez de le confirmer, il se peut qu’OVH les désactive par défaut même si pour moi ça n’a aucun sens
Hello,
Merci de ton aide, grâce à tes conseils, j’ai pu gérer le cache navigateur en ajoutant le script directement dans mon .htaccess.
J’ai gagné 1s sur le TTI et suis en dessous des 3 secondes avant affichage complet sur l’IHM (http://tools.pingdom.com/)
Hello, merci pour ton retour 🙂
Salut,
Merci pour le tuto, ça marche bien pour mon site juste un souci avec les js externe par exemple https://apis.google.com/js/platform.js (30 minutes)..
Alors est ce que le mieux de faire un appel local des js ? ou bien il y a une autre méthode htaccess ?
Merci et bonne continuation
Mouad
Hello,
C’est la problématique des fichiers externes. Il n’y a pas de technique avec htaccess.
J’avais lu une méthode en PHP qui consistait à utiliser CURL pour enregistrer tous les mois une version locale de ce type de fichier et le mettre en cache sur son propre système.
À explorer 😉
Bonjour,
j’aurais besoin de vos lumières,
je développe une petit appli web métier, et je souhaite améliorer la rapidité de chargement des pages en permettant au navigateur de mettre en cache les fichiers qui ne change pas ou très rarement (javascript : openlayer, jquery, fct perso et les fichiers css, image).
J’ai suivi multe tuto mais je n’ai pas trouvé pourquoi cela ne fonctionne pas voilà ma démarche :
déjà la config de mon apache via un petit [b]phpinfo()[/b];
ensuite j’ai chargé les modules nécessaire et relancer le serveur web:
en relançant ma page php phpinfo() je retrouve bien les modules d’activé
Ensuite j’ai placé à la racine de mon site un .htaccess contenant le code suivant
bon ici cela ne concerne que les fichiers .css
j’ai fait une page html qui charge une feuille de style sur le serveur. La page contient un lien href que la rapelle afin de simulé mon test.
Avec firebug je surveille la transaction et à chaque fois la page CSS et appellé et retéléchager du serveur… avec le code 200 et pas 304…
Réponse
Requête
j’ai essayé d’autres config sans succés
Grand snif 😥
j’y comprends rien, pourtant les indications semblent bien être envoyées, pourquoi mon navigateur firefox n’en tient pas compte?
Je sais que cette article date, mais je ne suis pas d’accord avec toi pour les eTags, certains contenus dynamique les utilisent aussi, par exemple, en jquery, quand je fais une grosse requete ajax ( pour récupéré des points sur une carte par exemple ), je rajoute l’option ifModified, qui dit à jQuery de checker l’eTag, si le serveur n’envoie plus d’eTag, il risque d’augmenter le nombre de requetes lourdes pour économiser des requetes légères .
Hello,
Je ne savais pas. Merci pour l’info 🙂
Bonjour à tous !
J’ai ajouter les lignes à mon htacces et là mon site me renvois :
Internal Server Error
Voici ma page htacces : http://www.filedropper.com/htacces
Pouvez-vous m’aider svp ?
Cordialement
Merci pour ces explications très claires !
Petite question quelle est la methode que vous le conseillez pour un fichier .js non stable ? faut il changer le nom du fichier à chaque modification ou existe il une méthode simple pour l’exclure du cache ?
Merci d’avance
Hello,
Le plus simple si le nom ne change pas est de l’exclure explicitement, ou de lui attribuer un Expire plus courte :
Tu peux également cibler tous les fichiers d’un dossier particulier ainsi. Règle à placer après les blocs plus génériques.
J’espère que ça marchera pour toi 🙂
Bonjour et merci pour cet article,
j’ai bien compris comment fonctionnait le fichier .htaccess mon souci est que je voudrais mettre en place les ExpiresByType seulement pour la partie du site en public et non pas dans l’admin qui est automatiquement touché, ce qui n’est pas très pratique pour les mises à jour fréquentes.
Comment puis je faire ? J’ai déjà tenté de créer un .htaccess dans un dossier /admin en mettant ExpiresActive Off mais rien n’y fait.
Merci d’avance.
Bonjour,
Je n’ai pas encore trouvé l’information que je cherche, si j’ajoute les deux lignes suivantes, que font t’elles exactement ?
Pourrais je encore me connecter à mon CMS ?
# Éviter les requêtes inutiles :
Header unset Set-Cookie
RequestHeader unset Cookie
Je rajoute mes notes sur Apache2.4
mod_file_cache
https://www.visionduweb.eu/wiki/index.php?title=Installer_Apache2_sur_Debian#Module_Apache2_mod_file_cache
mod_cache
https://www.visionduweb.eu/wiki/index.php?title=Installer_Apache2_sur_Debian#Module_Apache2_mod_cache
mod_expires
https://www.visionduweb.eu/wiki/index.php?title=Installer_Apache2_sur_Debian#Module_Apache2_mod_expires
Bonjour Geoffrey,
Je ne sais pas si vous êtes toujours actif en 2019 mais dites moi s’il vous plaît si vous avez pu trouver une solution pour les fichiers « .htaccess » d’hébergeurs tels que Blogger, CanalBlog, Ekablog et autres?
Merci
Hello,
Il n’y a pas de solution pour ces services à ma connaissance.
Bonne journée.
Merci pour les explications, très instructif et clair