Ce guide montre comment configurer correctement les paramètres d'expiration de l'en-tête avec Apache, en optimisant les performances du serveur Web dans le traitement des fichiers statiques, tels que les images, les fichiers CSS ou JavaScript.
Une grande quantité de bande passante sur votre serveur sera économisée, en fixant une date minimale pour la mise en cache du fichier. Par conséquent, en utilisant le cache du navigateur client, les sites Web hébergés se chargeront plus rapidement.
Tout d'abord, connectez-vous à votre serveur via une connexion SSH. Si vous ne l'avez pas encore fait, il est recommandé de suivre notre guide pour vous connecter en toute sécurité avec SSH. Dans le cas d'un serveur local, passez à l'étape suivante et ouvrez le terminal de votre serveur.
Activer les modules nécessaires
Pour activer l'envoi des Headers nécessaires, activez d'abord le module Apache associé :
$ sudo a2enmod expires
Et puis redémarrez le service :
$ sudo service apache2 restart
Configuration des modules
La configuration du module peut être insérée dans les éléments suivants :
En configuration Apache :il sera hérité par tous les sites contrôlés par Apache (hôtes virtuels et non virtuels)
Dans un conteneur d'hôte virtuel
Dans la directive
ou le fichier .htaccess
Dans l'exemple suivant, il est inséré dans la configuration par défaut du site :
$ sudo vim /etc/apache2/sites-available/000-default.conf
Ajoutez ensuite la configuration suivante :
<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"
</FilesMatch>
</IfModule>
Grâce à la directive FilesMatch, quels fichiers doivent être conservés par le navigateur client (dans ce cas css, jpg, png, gif et js) sont spécifiés.hile, via ExpiresDefault, combien de temps ils doivent être conservés (dans cet exemple, une semaine) pour est indiqué.
Pour appliquer les modifications, redémarrez Apache :
$ sudo service apache2 restart
En plus des méthodes FilesMatch et ExpiresDefault, ExpiresByType peut être utilisé pour définir l'expiration de l'en-tête pour chaque type de fichier, par exemple :
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 60 days"
ExpiresByType image/png "access plus 60 days"
ExpiresByType image/gif "access plus 60 days"
ExpiresByType image/jpeg "access plus 60 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 week"
</IfModule>
En utilisant cette méthode, un contrôle plus granulaire sur la durée du cache peut être obtenu et la mise en cache des données Ajax, en n'insérant pas l'application de type mime/javascript peut être obtenue.
Pour les deux directives, la syntaxe pour indiquer la durée du cache est la même, c'est-à-dire :
“[base] plus [valore] [tipo] [valore] [tipo] [valore] [tipo] …”
La valeur de base peut être :
accès :date de la demande du client
modification :date de modification du fichier
Alors que le type peut avoir les valeurs suivantes :
années :années
mois :mois
semaines :semaines
jours :jours
heures :heures
minutes :minutes
secondes :secondes
Quelques exemples de configuration :
# One year cache expiry
ExpiresByType image/jpeg "access plus 1 year"
#Furthermore, more than one unit of measurement in sequence can be added. For example:
# Set 1-month, 15- day and 2-hour expiry
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
# Cache expiry from the file modification date more than 5 hours and 3 minutes
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
S'il vous plaît, rappelez-vous que si vous devez modifier le contenu d'un fichier en cache, ce dernier ne sera pas téléchargé par les clients jusqu'à ce que le temps de mise en cache expire. Cela pourrait entraîner des dysfonctionnements sur vos sites Web.
Bien que les clients ne puissent pas être forcés d'ignorer le cache précédemment enregistré, plusieurs techniques peuvent être utilisées pour éviter ce problème.
Une méthode souvent utilisée consiste à renommer le fichier qui vient d'être modifié (par exemple de style.css à style-v2.css) ou à changer les liens en ajoutant un numéro de version, par exemple à partir de :
<script src="https://www.domain.com/js/myScript1.js"></script>
au suivant :
<script src="https://www.domain.com/js/myScript1.js?v=3.1"></script>