Optimiser son site sous Ubuntu : Configurer l'en-tête Expires

Lire un livre sur comment optimiser son site web c'est bien, appliquer les conseils qui s'y trouvent c'est encore mieux. Parmi les 14 bonnes pratiques, 3 peuvent être appliquées très rapidement au niveau système en quelques lignes de commande et de configuration du serveur web pour un résultat quasi immédiat :

Dans un premier temps, je vais m'intéresser à la règle 3, je suppose que vous avez déjà un serveur web Apache2 actif servant des fichiers (peu importe la technologie autour). La configuration suivante est utilisée sur ma Dedibox sous Ubuntu avec Apache2 mais doit pouvoir s'appliquer à peu près partout.

Ajoutez et configurez l'en-tête Expires

L'en-tête Expires indique quand un élément devra expirer du cache du navigateur; mettre une date d'expiration dans un futur lointain permet de maximiser l'utilisation du cache navigateur et donc d'éviter les téléchargements inutiles, ce qui est particulièrement utile pour les éléments statiques (images, feuilles de style, ...) qui ont tendances à changer ... peu fréquemment mais à ralentir l'affichage de la page si ils ne sont pas en cache. Pour ces éléments, il est possible de configurer l'expiration dans Apache avec le module expires. Pour les pages dynamiques ou éléments générés dynamiquement, c'est au script d'envoyer l'en-tête et sa valeur adéquate par exemple avec la fonction header() en PHP.

L'activation du module pour Apache2, il faut utiliser a2enmod avec la ligne suivante et ensuite recharger apache :

$ sudo a2enmod expires
$ sudo /etc/init.d/apache2 reload

Il reste alors à configurer ce module. Je stocke la configuration de ce module dans le fichier /etc/apache2/conf.d/expires dont voici le détail :

ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/x-icon "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/x-javascript "access plus 30 days"

Tous les éléments statiques des types listés expirent 30 jours après leur premier téléchargement. Après un nouveau reload d'Apache, vous devriez voir apparaître l'en-tête Expires par exemple avec l'extension Firebug de Firefox au premier chargement des éléments de la page. Ensuite le navigateur utilisera son cache ce qui devrait accélérer l'affichage des pages suivantes utilisant les mêmes éléments.

» Commentaires

- Quel rapport avec Ubuntu ? (#66993) par Aguillem le 12 Août 2008 à 11:46
Salut,
je ne vois pas trop le rapport qu'il y a entre ton billet et Ubuntu. Je rencontre trop souvent l'amalgame entre Ubuntu et Linux dans les blogs, car une manip n'est que rarement réservé à Ubuntu et marche généralement sous la plupart des systèmes Unix.
Quand à ton billet, il n'a vraiment pas de rapport avec Ubuntu, vu que tu parles de configuration Apache. Même si ta dédibox est effectivement sous Ubuntu, rien dans ton billet n'est spécifique à Ubuntu.
Je trouve juste dommage que l'on n'attache pas plus d'importance à bien cibler nos titres de billets, pour permettre aux lecteurs de se faire une idée plus rapide du contenu, et ne pas perdre du temps à aller lire un billet qui ne l'intéresse en fait pas du tout (ou pire à passer 5min pour laisser un commentaire)...
- Rapport avec Ubuntu (#66994) par Damien le 12 Août 2008 à 12:05
@Aguillem : c'est cool on est d'accord, je dis exactement la même chose en moins long dans le deuxième paragraphe...
"La configuration suivante est utilisée sur ma Dedibox sous Ubuntu avec Apache2 mais doit pouvoir s'appliquer à peu près partout."
Sinon ce sera légèrement différent sous Fedora par exemple (ou sur beaucoup d'autres distributions) puisque les fichiers ne sont pas au même endroit (et je ne sais pas où d'ailleurs). Mais qu'est ce qui te gêne au fait ? Le "Ubuntu" dans le titre ? J'aurai du mettre "Optimiser son site sous une distribution dérivée de Debian : Configurer l'en-tête Expires", tu avoueras que c'est un poil long.
- Autre qu'Ubuntu (#66995) par llaumgui le 12 Août 2008 à 15:46
Lut,

Tout d'abord, merci Damien pour l'astuce, qui complète encore mieux ma configuration.

Ensuite, le seul truc propre à Debian/Ubuntu c'est le a2enmod. Mais j'avoue que j'apprécie tellement les script a2* de Debian que je l'ai est porté sous Fedora/CentOS. Ils sont en effet, fortement pratique.

Pour ma part, j'ai aussi rajouté :
> ExpiresByType text/javascript "access plus 30 days"
- Ubuntu != linux... (#67001) par The_glu le 13 Août 2008 à 08:24
http://blog.theglu.org/index.php/2008/06/29/linux-ubuntu-et-inversement/

et d'ailleurs le billet n'a rien à voir avec linux mais avec apache, sous windows on pourrait faire la même chose (oui, tuez moi x])..
- Je me répète (#67004) par Damien le 13 Août 2008 à 10:19
@The_glu : au risque de me répèter, je dis exactement la même chose dans le billet, et à AUCUN moment je ne dis que c'est spécifique à Ubuntu ! J'écris même LE CONTRAIRE ! Crois moi, je ne fais pas l'amalgame GNU/Linux-Ubuntu, j'ai pas attendu Ubuntu pour utiliser GNU/Linux...

Ce qui est spécifique à Ubuntu (peu de chose OK) dans ce billet (enfin "aux distributions dérivées de Debian" mais c'est un peu long) ce sont les emplacements des fichiers (différents sur certaines autres distributions, sur les autres Unix, sur Windows évidemment), les utilitaires employés (dans ce cas a2enmod qui n'existe pas sur Fedora par exemple comme le fait justement remarquer Llaumgui).

Évidemment qu'on peut faire la même chose partout où tu peux mettre Apache mais à ce moment là on ne parlera jamais d'Ubuntu ou d'une quelconque distribution puisque toutes les distributions intègrent les mêmes logiciels (ou presque). D'ailleurs on devrait même pas parler de Linux puisque 90% de ce que tu pourras faire sur Linux, tu pourras le faire sur Solaris, FreeBSD ou n'importe quel Unix propriétaire et même Windows avec Cygwin et compagnie.
- Idem... (#67029) par jac3n le 18 Août 2008 à 13:34
Il n'empêche que tu ne spécifie pas la réelle cible (Apache) !

A quoi bon faire du (pseudo) journalisme si ce n'est déjà pour respecter la plus élémentaire des règles de la diffusion de l'information... tu n'a qu'à créer une rubrique d'ouverture plus large concernant les astuces du libre, sans même changer le contenu (quand tu parle de ubuntu, etc, pas de soucis !). Simplement, le fil rss du ubuntu planet charge ton sujet qui du coup n'interesse pas grand monde puisque le public ciblé n'est pas le bon...

Cordialement, jac3n
- ... (#67030) par Damien le 18 Août 2008 à 13:52
@jac3n : En même temps je suis pas journaliste (ni de loin, ni de près), c'est un *BLOG PERSONNEL* ici au cas où tout le monde ne le comprendrait pas et ensuite je ne force personne à me lire non plus...

Les commentaires sont désactivés

» Trackback

Aucun trackback

Les trackacks sont désactivés

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.

Login