Optimiser les performances des sites Web est une activité qui peut vite devenir chronophage pour plus d’un Webmaster. Les outils permettant de déterminer les différents paramètres à optimiser ce sont multipliés que ce soit avec PageSpeed ou YSlow pour Firefox ou GTmetrix depuis le Web. Pourtant, gagner des points dans ces différents tests n’est pas chose facile et on se réjouira donc aujourd’hui de voir que Google tente d’automatiser ce travail grâce à un module pour Apache 2.2 : mod_pagespeed.

Alors que l’extension PageSpeed pour Firefox/Firebug tentait de donner des conseils pour optimiser son site, le module mod_pagespeed tente cette fois-ci de les appliquer. L’opération est effectuée à la volée par le serveur Apache et ne nécessite donc aucune modification de code dans votre application (du moins quand ça marche).

L’installation de PageSpeed est relativement simple, il faut tout d’abord télécharger le module sur cette page et l’installer avec l’une des commandes suivantes en fonction de votre distribution :

Pour Debian ou Ubuntu en tant que root :

dpkg -i mode_pagespeed_*.deb

Pour CentOS ou Fedora en tant que root :

rpm -i mod_pagespeed_*.rpm

Par exemple pour une debian :

Sélection du paquet mod-pagespeed-beta précédemment désélectionné.
(Lecture de la base de données... 43536 fichiers et répertoires déjà installés.)
Dépaquetage de mod-pagespeed-beta (à partir de mod-pagespeed-beta_current_i386.deb) ...
Paramétrage de mod-pagespeed-beta (0.9.0.0-r128) ...
Enabling module pagespeed.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Le fichier de configuration se nomme pagespeed.conf et est situé à l’emplacement suivant sur Debian ou Ubuntu :

/etc/apache2/mods-available/pagespeed.conf

Sous CentOS ou Fedora :

/etc/httpd/conf.d/pagespeed.conf

Le fichier de configuration par défaut ressemble à ça :

<IfModule pagespeed_module>
    SetOutputFilter MOD_PAGESPEED_OUTPUT_FILTER
    ModPagespeed on
 
    # ModPagespeedUrlPrefix is the prefix assigned to some types of
    # rewritten resources. This directive will be removed in a future
    # release. For now, you must specify a URL and path for a hostname
    # that is served by this Apache
    # instance. http://yourhostname/mod_pagespeed is a good default
    # value (replace localhost, below, with the hostname of your
    # Apache instance).
    ModPagespeedUrlPrefix                "http://localhost/mod_pagespeed/"
 
    # The ModPagespeedFileCachePath and
    # ModPagespeedGeneratedFilePrefix directories must exist and be
    # writable by the apache user (as specified by the User
    # directive).
    ModPagespeedFileCachePath            "/var/mod_pagespeed/cache/"
    ModPagespeedGeneratedFilePrefix      "/var/mod_pagespeed/files/"
 
    # Override the mod_pagespeed 'rewrite level'. The default level
    # "CoreFilters" uses a set of rewrite filters that are generally
    # safe for most web pages. Most sites should not need to change
    # this value and can instead fine-tune the configuration using the
    # ModPagespeedDisableFilters and ModPagespeedEnableFilters
    # directives, below. Valid values for ModPagespeedRewriteLevel are
    # PassThrough and CoreFilters.
    #
    # ModPagespeedRewriteLevel CoreFilters
 
    # Explicitly disables specific filters. This is useful in
    # conjuction with ModPagespeedRewriteLevel. For instance, if one
    # of the filters in the CoreFilters needs to be disabled for a
    # site, that filter can be added to
    # ModPagespeedDisableFilters. This directive contains a
    # comma-separated list of filter names, and can be repeated.
    #
    # ModPagespeedDisableFilters rewrite_javascript
 
    # Explicitly enables specific filters. This is useful in
    # conjuction with ModPagespeedRewriteLevel. For instance, filters
    # not included in the CoreFilters may be enabled using this
    # directive. This directive contains a comma-separated list of
    # filter names, and can be repeated.
    #
    # ModPagespeedEnableFilters collapse_whitespace,elide_attributes
 
    # ModPagespeedDomain
    # authorizes rewriting of JS, CSS, and Image files found in this
    # domain. By default only resources with the same origin as the
    # HTML file are rewritten. For example:
    #
    #   ModPagespeedDomain cdn.myhost.com
    #
    # This will allow resources found on http://cdn.myhost.com to be
    # rewritten in addition to those in the same domain as the HTML.
    #
    # Wildcards (* and ?) are allowed in the domain specification. Be
    # careful when using them as if you rewrite domains that do not
    # send you traffic, then the site receiving the traffic will not
    # know how to serve the rewritten content.
 
    # Enables server-side instrumentation and statistics.  If this rewriter is
    # enabled, then each rewritten HTML page will have instrumentation javacript
    # added that sends latency beacons to /mod_pagespeed_beacon.  These
    # statistics can be accessed at /mod_pagespeed_statistics.  You must also
    # enable the mod_pagespeed_statistics and mod_pagespeed_beacon handlers
    # below.
    #
    # ModPagespeedEnableFilters add_instrumentation
 
 
    # This handles the client-side instrumentation callbacks which are injected
    # by the add_instrumentation filter.
    # You can use a different location by adding the ModPagespeedBeaconUrl
    # directive; see the documentation on add_instrumentation.
    #
    # <Location /mod_pagespeed_beacon>
    #       SetHandler mod_pagespeed_beacon
    # </Location>
 
    # This page lets you view statistics about the mod_pagespeed module.
    <Location /mod_pagespeed_statistics>
        Order allow,deny
        # You may insert other "Allow from" lines to add hosts you want to
        # allow to look at generated statistics.  Another possibility is
        # to comment out the "Order" and "Allow" options from the config
        # file, to allow any client that can reach your server to examine
        # statistics.  This might be appropriate in an experimental setup or
        # if the Apache server is protected by a reverse proxy that will
        # filter URLs in some fashion.
        Allow from localhost
        SetHandler mod_pagespeed_statistics
    </Location>
</IfModule>

Modpagespeed On ou Off permet d’activer ou désactiver pagespeed. PageSpeed tire partie d’optimisations dans différents domaines : html, css, js, images, etc. Les optimisations peuvent consister à compresser les données, à les regrouper (pour réduire le nombre de requêtes par exemple), à supprimer des données inutiles, positionner les durées du cache pour le navigateur, etc.

Pour les optimisations autres que le HTML, il faudra préciser les domaines concernés dans le fichier de configuration :

    ModPagepeedDomain http://my_site.com
    ModPagepeedDomain http://cdn.my_site.com

Vous pourrez alors activer ou désactiver chacun des filtres. Je vous conseille de consulter la description des filtres un par un sur cette page.
Vous verrez en effet que certaines optimisations ne sont pas sans risque : pour le javascript par exemple, le fait d’activer des optimisations du type « Minify Javascript » peut parfois poser problème et le javascript peut ne plus fonctionner complètement. Tester est la meilleure façon de s’en rendre compte.
Evitez donc d’activer toutes les optimisations d’un seul coup.

Le module peut être désactivé et activé facilement avec les commandes :

a2dismod pagespeed
a2enmod pagespeed

Un redémarrage d’Apache est nécessaire pour prendre tout ça en compte.

Allez, bon courage pour le « grade A » ;)

mod_pagespeed
.

 


 

11 réponses pour "Optimiser son site Web automatiquement avec mod_pagespeed pour Apache"

  1. Greg  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Ubuntu Linux Ubuntu Linux
    03 novembre 2010 @ 23:47
    1

    Merci pour la traduction ;)

  2. Amaury  Surfe sur Google Chrome Google Chrome 7.0.517.41 avec Windows Windows 7
    04 novembre 2010 @ 0:52
    2

    +1 Greg, j’allais m’y pencher demain mais grâce à ta traduction et analyse, ça sera moins difficile.

    Sinon, c’est chaud d’avoir un grade A sans serveur mandataire :)

  3. Amaury  Surfe sur Google Chrome Google Chrome 7.0.517.41 avec Windows Windows 7
    04 novembre 2010 @ 1:15
    3

    Désolé du double post, mais c’est franchement pas mal après test.

    Sur un de mes sites les moins optimisé, je suis passé de 67% à 82% d’après gtmetrix.

    Sachant que je n’ai pas de deflate, ni de header expire sur ce site là !

    Je vais laisser ça comme ça quelques jours et voir si il y a des problèmes javascript ou CSS.

    En tout cas l’install à été vraiment simple : le dpkg et un apache restart et hop ! Ca s’est installé tout seul !

  4. Tornado_OLO  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Ubuntu Linux Ubuntu Linux
    04 novembre 2010 @ 10:56
    4

    Etrange comme idée de modifier le fichier de conf avec un Modpagespeed On/Off alors qu’un a2dismod/a2dismod pagespeed suffit.
    Alors certes pour la première méthode, un reload suffira, alors qu’un restart sera nécessaire pour la seconde, mais ça fait un peu crado comme méthode que de garder le mode actif alors qu’il ne sert pas ^^

  5. Papy  Surfe sur Safari Safari 6531.22.7 avec iOS iOS 4.1
    04 novembre 2010 @ 11:45
    5

    Google ne précise que la méthode du on/off sur son site, c’est pour ça que j’ai précisé l’activation/désactivation du module qui me paraissait aussi plus propre. En fait l’avantage du on/off est de pouvoir activer pagespeed dans la conf d’un seul site je pense ou même dans un htaccess a priori.

  6. rick  Surfe sur Google Chrome Google Chrome 4.0.249.89 avec Windows Windows XP
    04 novembre 2010 @ 20:18
    6

    J’y connais pas grand-chose à ce type d’outils. Est-ce que ça peut être intéressant pour un site fait avec SPIP ?

  7. Hebergeur  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Windows Windows 7
    10 novembre 2010 @ 19:16
    7

    Pour ceux qui n’y connaissent rien, certains hébergeurs (Dreamhost par exemple) proposent l’installation de mod_pagespeed directement depuis le panneau d’hébergement (cpannel ou autre). Pratique pour ceux qui n’ont pas leurs serveurs et/ou n’ont pas accès aux fichiers conf
    Et bravo à Papy pour le « B » ;-)

  8. Greg  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Windows Windows 7
    10 novembre 2010 @ 23:08
    8

    J’aime pas trop …. je préfére gérer moi même mes pages sans que Apache le fasse pour moi :)

  9. greg  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Mac OS X Mac OS X 10
    30 novembre 2010 @ 11:00
    9

    91% partout d’aprés Gmetrix …. :) et encore j’ai pas optiiser mes images
    J’évite les java script voila tout

    @Rick Contrairement à wordpress, Spip est super léger pas besoin de tout ce cirque

  10. Loup-des-Neiges  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.13 avec Windows Windows 7
    23 décembre 2010 @ 16:08
    10

    Salut,

    il y a une petite erreur dans ton article :
    > ModPagepeedDomain http://my_site.com
    Il manque de s « ModPagespeedDomain »

    E dessous de l’image GTmetrix ;)

    Sinon chez moi, suite a l’activation du mod, j’ai 15% de chances que la page reste sur chargement sans rien n’afficher …
    (CentOS 5.5 64b, install via repo rpm google)

  11. Dymastyle  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.13 avec Windows Windows 7
    03 janvier 2011 @ 14:29
    11

    Merci du partage !

Souvent les loups affamés disent " j'ai une faim de PapyGeek" +