Here With Me

Le blog technique d'Amaury Balmer qui parle de technologies open-source, mais surtout de WordPress !

Stress test de l’extension WP Rocket

1x1.trans Stress test de lextension WP RocketCe test a été réalisé sur la version 1.0 de WP Rocket, certaines critiques émises dans cet article sont désormais obsolètes.

Difficile exercice que de faire le test d’une extension WordPress, développée par des personnalités éminentes de la communauté française. (Xavier me dirait : diplomatie, diplomatie…)

Je me lance tout de même dans l’aventure…

Après avoir lu beaucoup d’articles dédiés à l’extension (dont beaucoup s’apparentent davantage à la de publi-information qu’à une véritable analyse), j’ai profité d’une promo sur Twitter pour acquérir une licence « professionnelle » et j’ai testé l’extension sur une plateforme de développement ainsi que sur 2 projets en phase de production pour me forger MON opinion.

Voici le premier article de la série stress test d’un plugin WP !

La promesse cliente

WP-Rocket est une extension pour WordPress qui a comme vocation d’améliorer les performances de votre site internet. C’est une extension « premium », vendue sous 3 licences : personnelle, business et professionnelle.

Les fonctionnalités proposées sont :

  • Mise en cache des pages
  • Préchargement du cache
  • Compression des fichiers statiques
  • Chargement différé des images
  • Optimisation pour le navigateur
  • Optimisation des images
  • Chargement différé des fichiers JavaScript

Juste que là, c’est du très classique on retrouve ni plus ni moins que tous les ingrédients de la « performance web ».

Mais la vraie promesse cliente du plugin à mes yeux, c’est « une configuration rapide ».

Dans l’univers des plugins WordPress, on trouve des centaines d’extensions ayant comme objectif d’améliorer la performance web d’un site internet, et ces extensions partagent systématiquement le même point commun : elles sont complexes et proposent des tonnes d’options. Et le pire, c’est que ces options ne sont utilisées que par une minorité de personnes.

WP Rocket, à l’image de l’extension WYSIJA, mise sur le côté simple, rapide et pédagogique de leur extension. (un principe de base de la philosophie WP : Décisions, not options)

Et de ce côté, on est très bien servi ! L’interface est extrêmement propre, les réglages de base permettent d’activer facilement les fonctionnalités principales de l’extension.

A noter qu’il ne semble pas possible de désactiver le cache statique, donc impossible de n’utiliser que les fonctionnalités de minification ou de chargement différé des images.

Analyse technique

La question que l’on peut se poser face à une extension qui promet d’améliorer la performance, c’est comment ? Quels mécanismes sont mis en place ? Les voici en détails

Cache statique

LA fonctionnalité la plus répandue pour améliorer la performance d’un site WordPress, c’est d’installer et configurer un cache statique. Le principe est simple, le premier visiteur consulte une page de votre site, le code HTML est généré dynamiquement par WP et il est stocké dans le cache pour une durée définie, les visiteurs suivants consultent alors la copie HTML.

Sur ce point, le plugin est très classique, les fichiers de cache sont stockés sur le système de fichiers (dans le dossier wp-rocket-cache), ce choix exclut « en grande majorité » les architectures multi-serveurs (rare c’est vrai). A noter, que le cache peut être différencié pour les mobiles, ceci afin de permettre l’utilisation de thème spécifique. (WP-Touch notamment)

Ma grande surprise concernant le cache statique et WP Rocket, c’est la non-utilisation  du « drop-in » advanced-cache.php. Ce fichier, que l’on trouve généralement dans le dossier wp-content pour peu que votre installation WP utilise un plugin de cache statique « traditionnel » permet de gérer la fonctionnalité de cache statique assez tôt dans l’exécution de WordPress.

Ici, point de dropin advanced-cache.php, le plugin utilise exclusivement les règles de réécritures (automatiquement ajouté dans le fichier .htaccess) pour permettre au serveur HTTP de charger les copies HTML en cache sans solliciter WordPress, ni PHP. C’est la technique la plus performante, mais elle requiert l’utilisation du serveur HTTP Apache2, cela veut dire que si votre serveur web est NGINX, ou bien Microsoft IIS, le plugin ne sollicitera jamais le cache statique généré.

Il faut donc prévoir le fait que « WP-Rocket » apporte des restrictions supplémentaires par rapport aux prérequis de WordPress. Ce qui est dommage, c’est qu’il est techniquement possible de cumuler les 2 fonctionnalités, c’est notamment ce que réalise l’extension WP-Super-Cache, elle propose de servir les fichiers directement avec le serveur HTTP, et à défaut elle utilise le dropin pour charger la copie en cache un peu plus tard dans le processus.

LazyLoad

La technique LazyLoad permet de différer le chargement des images, pour résumé, seules les images affichées réellement sur l’écran de vos internautes sont téléchargées. Les images présentes en base de page ne seront téléchargées que si l’utilisateur scroll dans son navigateur et affiche cette partie du site.

La fonctionnalité agit uniquement sur le contenu des articles/pages, les widgets, les images à la une et les avatars. A noter que le code JS nécessaire pour cette fonctionnalité est ajouté automatiquement dans le code HTML de votre page afin d’éviter de charger une ressource supplémentaire.

Concaténation & Minification des JS/CSS

La concaténation et la minification des ressources JavaScript et des feuilles de style CSS permettent de diminuer le nombre de requêtes HTTP nécessaires à l’affichage d’une page internet. Le plugin fait appel à la librairie PHP « minify », également utilisé par le plugin WP-Minify/BWP-Minify.

C’est donc une valeur sûre en terme de technologie, par contre on ne peut être que déçu que ce script ne génère pas de vrais fichiers CSS/JS comme peut notamment le faire AssetsMinify ou W3 Total Cache.

Les requêtes vers les ressources JS/CSS font systématiquement appel à une ressource PHP, moins performante et qui peut s’avérer problématique  lors de la mise en place d’un CDN notamment.

Compression, expiration des ressources statiques

Le plugin affine largement la configuration du serveur web HTTP Apache2 (via le fichier .htaccess) en redéfinissant les propriétés de mise en cache, de compression des ressources statiques, etc. Cela permet notamment de spécifier que les ressources JS/CSS doivent être mises en cache par les navigateurs pour une durée définie, et non rafraichies à chaque visite de la page.

Les règles ajoutées sont très répandues sur la toile, on peut notamment les retrouver dans le starter-kit de référence HTML5 Boilerplate.

Divers

Enfin, je passe très rapidement sur les autres fonctionnalités de l’extension que je considère comme mineure ou comme trop « avancée » :

  • Cookie de 3 minutes pour les personnes ayant posté un commentaire
  • JavaScript avec l’attribut « deferred » + utilisation du script LABjs
  • Suppression des numéros de version dans les ressources JS/CSS, notamment s’il s’agit du numéro de version de WP
  • Spécification systématique des dimensions des images

La spécificité du projet et de l’extension : Le préchargement

Une fonctionnalité intéressante du projet, c’est le préchargement du cache. Au lieu de laisser vos visiteurs patienter lors de la génération des copies HTML et leur mise en cache, le plugin sollicite un robot qui parcourt pour vous les pages les plus visitées de votre site pour précharger le cache.

Notez que ce n’est pas une fonctionnalité exclusive à ce projet, le plugin WP Super Cache propose déjà la même chose. (le côté complexe et mystique en plus)

La différence, c’est que le robot n’est pas intégré au plugin, le robot fonctionne depuis les serveurs de WP-Rocket et ce choix technique est contestable à mes yeux pour plusieurs points :

  • Confidentialité, un robot de cette nature fournit indirectement des données concernant l’activité d’un site internet
  • Confidentialité, la présence du robot indique aux auteurs l’existence d’un site
  • Restriction d’utilisation, notamment dans la cadre d’un site intranet, sans domaine public
  • Restriction d’utilisation, notamment si le site est protégé par une authentification

Alors effectivement, dans la cadre d’un site personnel, d’un site de TPE/PME, ça peut sembler assez anodin. Mais en entreprise, ma cible préférée pour WP, c’est clairement un mode de fonctionnement rédhibitoire. Par ailleurs, la fonctionnalité n’est pas désactivable…

Dans le même thème, l’obligation de déclarer chaque site utilisant le plugin via le site officiel est quelque chose d’assez contraignant. Sur ce point, le mode de fonctionnement de la licence GravityForms est bien plus pratique.

Benchmark : Avant/Après ?

Pour être tout à fait honnête, j’avais initialement prévu d’afficher les notes GTmetrix avant et après.Mais je suis revenu sur ma décision car l’impact de l’extension sur les performances d’un site WordPress dépend d’un trop grand nombre de paramètres, notamment :

  • L’hébergement, le plugin peut très bien fonctionner chez un prestataire A, et avoir un effet quasiment nul chez un prestataire B, notamment s’il manque des modules Apache2…
  • Le projet, le thème et les extensions utilisés, le plugin fonctionne parfaitement avec une installation fraiche, mais il peut générer des conflits JS important sur les thèmes premiums ou les projets « complexes »…

Personnellement, j’ai rencontré des problèmes de minification sur les 2 sites de production que j’ai testé, et une fois les problèmes résolus (ou plutôt contourné) j’ai constaté une baisse de la notation GTmetrix, malgré une amélioration de l’impression de fluidité…

Mais tout cela n’est guère étonnant car ces projets n’ont pas été bâtis autour de cette extension, il n’est donc pas anormal de rencontrer des conflits de cette nature…

En conclusion de ce chapitre, je pense que le benchmark comparatif de la performance des plugins de cache est possible, mais il ne reflète absolument pas le niveau de performance que vous allez pouvoir obtenir sur votre installation.

Par expérience, selon les projets et les plugins utilisés, j’obtiens parfois de meilleurs résultats avec Hyper-Cache, et parfois c’est WP-Super-Cache qui fait des merveilles…

Faut-il passer son chemin ?

C’est une question très compliquée et la réponse varie selon moi d’après votre niveau technique et l’environnement technique de votre projet.

On peut déjà éliminer WP-Rocket dans les situations suivantes :

  • Utilisation d’un serveur web exotique NGINX, Cherokee, Microsoft IIS
  • Utilisation d’un reverse-proxy avec Varnish ou autre (bien que compatible)
  • Architecture multi-serveur, car le cache aura davantage sa place dans un cache objet (cf Batcache)
  • Projet d’intranet

Dans ce type d’environnement, vous n’utiliserez pas 100% des fonctionnalités de WP-Rocket et d’autres solutions sont à considérer à mon avis.

Ensuite…

Si vous êtes fauchés/radins/amateurs des logiciels libres et que vous êtes un bidouilleur :
ou
Si vous êtes un professionnel/développeur WP :

Passez votre chemin, et installez le jeu d’extensions suivant

  • LazyLoad
  • WP Super Cache ou HyperCache
  • BWP Minify
  • + fichier HTACCESS optimisé en s’inspirant des règles de HTML5 Boilerplate

Vous obtiendrez un périmètre fonctionnel très proche de WP-Rocket, des plugins interchangeables et un niveau de performances comparable.

Si vous n’aviez rien compris à cet article, que vous n’êtes pas un bidouilleur ou que vous n’avez tout simplement pas de temps à investir dans la performance web :

Vous devriez probablement ouvrir un blog sur WordPress.com ou à défaut prendre une licence WP-Rocket car, et c’est ma conclusion, WP-Rocket ce n’est pas simplement une extension de plus à installer, c’est également un service de support (gratuit le temps de la licence – 1 an) pour vous assister à la bonne mise en place de la solution.

Pour avoir fait un tour rapide dans le forum de support, on constate qu’une extension de cette nature génère beaucoup de discussion, car chaque installation est unique et les bugs rencontrés sont à gérer au cas par cas.

Et donc même si je ne partage pas l’ensemble des choix techniques réalisés, et que je préfère une solution composée de différentes extensions, je tiens juste à tirer mon chapeau pour le travail de support que réalise les auteurs de cette belle et prometteuse extension.

Ma wishlist

Assez courte :

  • Support de advanced-cache.php
  • Documentation élargie au serveur HTTP Nginx
  • Robot de préchargement, en local ou à distance (au choix)
  • Amélioration du moteur de minification
    • Notamment le filtre d’exclusion, qui exclut bien le JS de la minification mais qui le déplace tout de même dans l’entête de la page :(
    • Utilisation de AssetsMinify ?
  • Suppression du contrôle de licence en mode GravityForms (utilisé pour les MAJ)

46 Commentaires

  1. Pingback : Stress test de l’extension WP Rocket | WordPress 2.0 Site

  2. Excellent! Difficile de se faire une opinion qd l'offre est payante. Sans avoir eu accès au code du plugin mais juste en lisant les spéc et les posts du support, j'en suis arrivé à la même impression…
    Je serais très intéressé par un test avec jetpack installé.

    • Le code est plutôt de bonne qualité.
      On peut regretter l’absence d’utilisation de classe PHP, voire de POO, mais le code est commenté, c’est plutôt limpide !

      Pour la compatibilité Jetpack, à priori ca tourne sans trop de soucis !

      • Pour quelle entité tu verrais une classe et quelle utilisation de la POO ?

        Dans un plugin, je ne suis pas fan de la POO. J’ai retourné ma veste car j’étais le 1er à le faire sur mes 1er plugins. Mais en y réfléchissant, je n’en voyais plus du tout l’utilité.

        Faire une classe sans une véritable entité (Personnage, Voiture, Article, Commentaire, Utilisateur, etc, etc…), juste pour avoir des méthodes qui appellent des hooks, je ne vois pas vraiment l’utilité. Que ce soit même en terme de lisibilité ou de maintenabilité.

        Par exemple, quelle serait l’utilité de mettre toute la partie sur le LayLoad à partir d’une classe ?

        Selon moi, le seul fichier qui pourrait être modifier en classe, ça serait le traitement pour la minification car on pourrait assimilé un fichier traité comme une entité.

        Cet avis est vraiment général pour tous les plugins. Quand je vois un plugin qui utilise une classe avec X méthodes, sans propriétés et un constructeur qui fait juste des appels aux hooks, je me pose des questions sur l’utilité de la chose.

        Il y a peut-être une raison à cette généralisation, mais je l’ignore.

  3. Je vais tenté de répondre à chacun des points abordés dans l'article.

    Tu as très bien cerné notre promesse client. Notre mot d'ordre est : simplicité. Que ce soit pour un novice ou pour développeur confirmé, nous souhaitons que la configuration de WP Rocket soit la plus simple et rapide possible.

    C'est pour cette raison que nous avons adopté la philosophie "Décisions, not options" de WordPress.

    D'ailleurs, WP Rocket est le seul plugin de cache (à ma connaissance !) qui fonctionne sans aucune option d'activée. On l'installe, on l'active et ça fonctionne déjà.

    – Cache Statique —

    Nous allons retourner notre veste et nous tourner vers le fichier advanced-cache.php pour une version proche. Pour avoir fait des tests, le temps de génération du fichier de cache n'était pas plus rapide en passant par le drop-in.

    Le choix de advanced-cache.php est uniquement pour une question de pratique.

    Wait and See :)

    – LayLoad —

    Je ne dirait pas "la fonctionnalité agit uniquement", mais plutôt "la fonctionnalité agit automatiquement". Il est tout à fait possible d'ajouter une image dans le processus de lazyload en lui ajoutant les attributs nécessaires à la détection du script. Si on comprend l'HTML, on a les capacités pour le faire. Dans le cas contraire, le plugin mettra en place le système sur une grande partie des images.

    De même, il est aussi possible de retirer des images du LazyLoad en ajoutant l'attribut data-no-lazy.

    Nous prévoyons un wiki pour les prochains mois afin que les personnes souhaitants aller plus loin avec le plugin puisse avoir toutes les informations sous la main.

    – Minification JS/CSS —

    Tu n'es pas le seul à nous faire la remarque sur les fichiers générés. Nous prévoyons d'instaurer ce système avant la fin de l'année, si le temps nous le permet (on a d'autres fonctionnalités à sortir avant).

    Par contre, il manque quelques précisions importantes. Nous ré-ordonnons automatiquement les fichiers JS et CSS. C'est-à-dire que l'on place d'abord les fichiers externes et ensuite les fichiers internes au domaine.

    De même, quand on détecte un fichier de Google Fonts, il est automatiquement ré-ordonner pour respecter la directive "Optimize the order of styles and scripts" de GT Metrix.

    De mémoire, WP Minify et BWP-Minify ne prennent pas en compte se ré-agencement des fichiers CSS/JS.

    – Le préchargement —

    Nous avons 2 robots préchargement qui interviennent à 2 moments différents.

    Le 1er est à la demande, quand on clique sur "Précharger le cache" dans l'admin bar ou dans l'onglet "Outils" des options de WP Rocket. C'est cette fonctionnalité qui est comparable à celle qui est proposée par WP Super Cache.

    En cliquant sur le lien/bouton, notre robot va parser toutes les URLs présentes sur la page d'accueil (menu, derniers articles, etc…). Ainsi, les articles/pages susceptibles d'être les plus visités sont directement en cache.

    Ensuite, notre 2ème robot est appelé automatiquement lors de la mise à jour d'un article/page/CPT/commentaire. Ce robot permet de précharger l'article, mais aussi la page d'accueil, les catégories/tags associés et les pages d'archives.

    Avec ce robot, on aura toujours une version en cache des articles/pages les lus/visités. Je ne crois pas que le préchargement de WP Super Cache permet d'avoir un équivalent. Ceci est à me confirmer ^^

    Enfin, il faut savoir que notre robot n'est pas un script PHP, mais un script Python. C'est pour cette raison que nos robots ne pourront jamais être en local. Nous avons fait ce choix car la librairie utilisée (Scrapy) est nettement plus rapide qu'un script PHP.

    De plus, en passant par nos serveurs, on évite au site du client de prendre toute la charge de la génération des fichiers de cache.

    "Par ailleurs, la fonctionnalité n’est pas désactivable…"

    Pour le préchargement des articles, il suffit de mettre dans le fichier functions.php :
    remove_action( 'shutdown', 'do_rocket_bot_cache_json' );

    Pour le préchargement globale, il suffit de ne pas cliquer dessus :)

    Comme pour le LazyLoad, notre wiki indiquera ces subtilités.

    – Divers —

    La spécification automatique des dimensions des images n'est vraiment pas à prendre à la légère. C'est un point de recommandations très importants en webperf. Je vous laisse faire le test sur une page avec une vingtaine d'images sans les attributs, et de refaire la même chose avec les attributs. On sent une réelle différence.

    Pour ceux qui ne le savent pas, l'ajout des attributs width et height sur les images évitent le calcul des dimensions au navigateur. Ça lui permet d'afficher le rendu de la page beaucoup plus rapidement.

    • Concernant « advanced-cache », l’intérêt majeur pour moi c’est de pouvoir « lire » les fichiers HTML en cache si la règle de réécriture d’apache2 a échouée. Donc pas seulement la génération…

      Pour la minification, j’ai un article en préparation sur le sujet, je détaillerai mon avis à l’intérieur.

      Concernant le préchargement de WPSC, la fonctionnalité est décrite ici (http://ocaoimh.ie/2010/04/28/preload-cache-wp-super-cache/) c’est plus basique que vous, car ca fonctionne par date de publication. Mais à mes yeux, le meilleur moteur de préchargement, c’est Google !

      Ensuite, le choix technique de faire le préchargement exclusivement depuis votre serveur pose pour moi des problèmes de confidentialité. C’est un point bloquant pour l’usage à BeAPI notamment.

      Python > PHP, oui sans aucun doute, surtout pour ce type d’usage ou la gestion multi-cpu est meilleure sur ce langage.

      Concernant la taille des images, j’ai effectivement déjà lu ce type de recommandation, mais j’aimerai bien voir des benchmarks comparatifs avec et sans. Pour moi, on est pas loin de la micro-optimisation.

      • « Mais à mes yeux, le meilleur moteur de préchargement, c’est Google ! »

        Seriously ?

        C’est justement pour cela que nous avons créer le robot : éviter le job à un visiteur et surtout à Google !!

        S’il se tape la génération du fichier de cache, je ne donne pas cher des stats de temps de chargement sur Google Analytics ;)

        Il faut justement faire en sorte que Google ai toujours une page cachée.

        Par la taille des images, c’est une optimisation très importante. Pour un site de photographe, le gain peut se compter en seconde.

  4. "Dans le même thème, l’obligation de déclarer chaque site utilisant le plugin via le site officiel est quelque chose d’assez contraignant"

    Je ne sais pas du tout comment fonctionne les clés chez GravityForms, mais nous ne pouvons pas nous passer de notre système. L'enregistrement des sites nous permet de faire plusieurs choses que nous sommes entrain de développer.

    Tout d'abord, on s'en sert pour avoir des rapports GT Metrix avant/après installation de WP Rocket.

    Ensuite, cela nous permettra aussi de savoir quand un client désactive le plugin. On pourra ainsi le contacter pour savoir s'il a rencontré des difficultés lors de la configuration du plugin.

    Ce système nous permet de récupérer quelques informations sur le serveur du client. Par exemple, si on détecte qu'il n'a pas le mod_deflate ou le mod_expires d'activé, on pourra le prévenir des méthodes à suivre pour activer ces modules.

    Grâce à ce système, nous souhaitons aider nos clients à profiter de WP Rocket dans les meilleurs conditions.

    "j’ai constaté une baisse de la notation GTmetrix, malgré une amélioration de l’impression de fluidité…"

    N'est-ce que ce que l'on recherche avant tout ? Un site plus rapide au delà des notes GT Metrix ?

    Les notes sont indicatives des bonnes pratiques. Elles ne reflètent pas le temps de chargement d'un site.

    On peut regarder les notes GT Metrix du site de lequipe.fr. On remarquera que les notes ne sont pas superbes. Pourtant, c'est un site ultra rapide.

    Du coup, si WP Rocket permet d'avoir un meilleur ressenti sur le temps de chargement, pourquoi s'en priver ?

    Pour la wishlist :

    - Support de advanced-cache.php : C'est en cours

    - Documentation élargie au serveur HTTP Nginx : ça viendra avant la fin de l'année. Ce n'est pas notre priorité pour le moment. On estime qu'une personne qui a les capacités de mettre NGINX sur son serveur dédié, elle a aussi les capacités de mettre Varnish et/ou Redis pour ces sites. Du coup, un plugin de cache devient totalement obsolète. Par exemple, sur GeekPress, on tourne sur NGINX, Varnish + Redis et pas de plugin de cache.

    - Robot de préchargement, en local ou à distance (au choix) : j'ai expliqué nos choix plus haut.

    - Amélioration du moteur de minification : j'espère avoir le temps pour faire cela avant la fin de l'année.

    "Notamment le filtre d’exclusion, qui exclut bien le JS de la minification mais qui le déplace tout de même dans l’entête de la page :("

    Pour le moment, on a décidé de tout mettre dans le head pour éviter les conflits avec les bouts de scripts ajoutés en plein milieu de la balise body.

    - Suppression du contrôle de licence en mode GravityForms (utilisé pour les MAJ) : ce n'est pas possible pour les raisons que j'ai mentionné plus haut.

    Pour informations, voici les fonctionnalités qui seront disponibles avant la fin de l'année :
    - cache partiel. Cela permettra de ne pas mettre en cache certaines parties des pages. Pour les widgets, cela se fera avec une simple case à cocher.
    - optimisation du poids des images. Nous allons sortir un web service Imagify.io qui sera un Smush.it Like. Le plus est que le gain en poids est de 10% supérieur pour les JPG par rapport à ce que l'on peut obtenir avec Smush.it.
    - CDN. Nous prévoyons un système de CDN qui sera un mix entre les options de WP Super Cache et W3TC
    - un fichier de cache spécifique aux versions mobiles. On aura un fichier de cache index.html pour la version bureau + un fichier index_mobile.html pour les mobiles.

    J'espère avoir apporté un peu plus d'informations concernant le plugin.

    • Concernant le mécanisme de clef et GravityForms, c’est assez simple. Il n’y a aucun contrôle de clef. Cette dernière n’a même pas besoin d’être renseigné pour que l’extension fonctionne. Il faut la compléter uniquement pour profiter des mises à jour en 1 clic depuis WP.

      Tout ce que tu dis sur la nécessité pour vous de connaitre les sites, de renvoyer des données d’utilisation est pour moi quelque chose de génant d’un point de confidentialité. Ca me gène que ca ne soit pas complètement désactivable. (à part jouer avec des hooks).

      Je trouve le contenu du fichier rockeeter.php terrifiant d’un point de vue transmission de données potentiellement sensible ;)

      Ensuite, vous visez une cible qui potentiellement ne comprend pas grand chose au CMS, à la performance web et aux modules serveur, donc je peux comprendre. Mais pour les advanced-users, c’est bloquant.

      • Hello
        Nous n’avons pas communiqué sur Rocketeer.php car je l’ai mis en « test » et il s’avère que son utilité est énorme pour le support. Néanmoins je suis plus que conscient de la gène et on va faire en sorte que cet appel devienne un bouton à cliquer de la part de l’admin lors d’une demande de support et non plus un appel de notre part, arbitraire. Je vais aussi supprimer quelques infos, mais dans les grandes lignes obtenir ces infos nous évite de devoir intervenir en admin sur le site juste pour aller lire tout ça. Gain de temps et tout le monde ne peut pas nous donner un accès admin parfois.
        Voilà ;)

  5. Bonjour,

    J'ai lu cet article ce week-end. J'utilise la rocket en licence business à la fois pour encourager une initiative WP "made in France" et pour les performances de l'outil.

    C'est en effet le premier article sur WP-rocket qui propose une analyse de fond. Merci pour cela. Je trouve en revanche la conclusion très dure :

    Si vous êtes un professionnel/développeur WP passez votre chemin

    La combinaison de plugins proposée en alternative correspond exactement à celle que j'avais avant d'utiliser la rocket. Concernant "vie privée", spécifications techniques peu m'importe au final maintenant c'est vrai que c'est un point lors d'une utilisation chez un client.

    Le minify et le lazy load peuvent poser problème aussi.

    Maintenant comme dit dans l'article, le support et j'ajouterais le côté 4 plugins en 1 sont des plus.

    Tout cela pour une question :

    Dans mon cas d'utilisation et à en croire l'article, le choix pour WP rocket n'est pas le bon?

    • Il est vrai que la conclusion a été difficile à rédiger. Mon avis est assez partagé.

      Le challenge de ce projet, c’est que le plugin couvre un périmètre fonctionnel de connaisseur (performances web), et pour autant il est destiné aux utilisateurs « lambda ».

      La cible me parait donc étroite.

      Si je mets de côté le problème de confidentialité.

      À mon avis, pour un professionnel du web, pour qui la performance web n’a aucun secret. Il sera à mon avis plus intéressant de privilégier des solutions open sources et d’installer 3 plugins (cache + minify + lazyload) que de souscrire à une licence annuelle.

      Car il aura le choix des plugins selon le projet, l’hébergeur, la compatibilité ou pas avec les thèmes/extensions utilisés.

      Au final, avec un serveur HTTP bien configuré et ces 3 plugins on retrouve le même périmètre fonctionnel et un niveau de performance équivalent.

      On peut même viser plus haut, en allant jouer du côté Linux, avec des solutions encore plus avancées comme Varnish/Nginx etc.

      Au final, je pense, le plugin n’apporte pas grand-chose de nouveau d’un point de vue strictement technique. Il fait les choses bien, et avec une ergonomie sympa. La plus value essentielle, c’est le support.

      Donc si le « professionnel du web » sait d’avance qu’il ne sollicitera pas ou ne souhaite pas solliciter le support, le choix de WP-Rocket n’est peut-être pas le bon.

      • Pour rappel, la licence n’est pas annuelle, mais illimitée. C’est le support et les mises à jour qui sont limités à 1 an. Après 1 an d’achat; le plugin sera toujours actif et les robots aussi.

        Notre cible est assez simple : débutant et confirmé.

        Qu’est-ce qu’il est difficile de trouver des infos ou une doc correct sur WPSC ou W3TC.

        Par exemple, on galère un peu à trouver un tuto expliquant comment je peux vider le cache de mon domaine avec W3TC ou WPSC quand je sauvegarde une administration créé par mes soins.

        La simplicité doit se retrouver dans la configuration du plugin, mais aussi dans la personnalisation en cas de besoin. C’est pour cette raison que nous préparons un wiki comme celui de WooCommerce et un blog pour partager des astuces.

        Ainsi, un développeur aura toute la documentation sous le code.

        Je dirai plutôt que la plus value essentielle, c’est la simplicité d’installation/configuration/personnalisation plutôt que le support.

        Je me permets de dire cela, car c’est le retour que l’on a eu des Freelances/Agences qui utilisent le plugin. Elles ne veulent pas se prendre la tête à configurer 4/5 plugins pour avoir de bonnes performances.

        Par contre, je rejoins et je confirme cet avis : si vous maitrisez l’administration réseau, que vous êtes capable d’installer NGINX, Varnish, PageSpeed, ce plugin ne sera pas utile. Je suis moi-même dans ce cas sur mon propre blog. Mais, faut-il encore avoir les compétences de mettre tout cela en place :)

    • Je compléterai en rajoutant que l’univers des plugins open-source sur le sujet de la performance est assez aléatoire.

      Selon chaque projet, hébergement, développeur, le meilleur plug-in varie.
      Certains ne parlent que de W3 Total Cache, d’autres misent sur WPSC, d’autre sur batcache !

      Bref, dans le domaine, il y a beaucoup d’avis divergeant. C’est donc davantage un choix personnel, qu’un choix strictement technique.

      • Merci de tes précisions détaillées. Pour autant je me dis que celui pour qui la performance n’a aucun secret n’aura même pas besoin de plugins du tout, autant mettre en place son propre système.

        C’est en cela que je saisis pas bien la conclusion. Même si j’ai des notions de performance pour mon code je ne suis pas spécialiste, donc l’offre pour moi est de pouvoir bénéficier d’un support et d’un outil tout en un relativement performant.

        C’est plus la collecte des données et leur utilisation qui peut alors jouer dans la balance car le client ne signe pas pour cela a priori. Maintenant est-ce que les autres produits du marché font la même chose?

        Tu parlais d’un robot local non?

  6. Concernant l'attribution de largeur et de hauteur aux images dépourvues de ces attributs: comment fonctionne le plugin en cas de site RWD (responsive)?

  7. @dmsr: Il se passe que tout est bon si le développeur du thème n'a pas coder comme un porc :)

    C'est-à-dire que s'il n'a pas oublié de mettre la déclaration : img { height: 100% } tout ira bien. Car je vois souvent des thèmes qui oublient d'ajouter le height: 100% sur les images.

    • D’après mon intégrateur @Co_cola, la pratique est discutable et pose des problèmes de compatibilité avec certains navigateurs. height:auto serait également un bon candidat.

  8. Pingback : L’Hebdo WordPress n°198 : bbPress – 2014 – extensions | WordPress Francophone

  9. Bravo pour cet article rafraîchissant qui renouvelle les publications exclusivement promotionnelles à propos de ce plugin que l’on a vu depuis le début de l’été. L’exercice était délicat car la communauté semble très resserrée et politiquement correcte autour de certains auteurs. Pourtant l’exercice était indispensable et rend service aux auteurs de ce plugin : les publications commerciales étaient tellement flagrantes qu’elles ont provoqué quelques doutes.
    Il en va ainsi je crois pour toutes les communautés qui ont tendance à l’auto-congratulation souvent jusqu’à en perdre beaucoup de sens critique. Il est bon pour WordPress que chacun en son sein puisse garder une grande liberté de ton et accepte de se remette en question sans faire d’affaire personnelle de critiques. C’est comme cela que les plus brillants, dont font partie je crois les créateurs du plugin dont il est question ici, emmèneront WordPress encore plus haut.
    Des articles comme ceux là informent et poussent chacun à être meilleur. C’est l’état d’esprit qui, je crois, a prévalu au lancement de WordPress il y a dix ans. Je ne peux que souhaiter de mon côté (utilisateur de WordPress), que cela se poursuive. Je suis arrivé sur cette page à partir de l’hebdo WordPress 198 de Benoît Catherineau. On peut donc être rassuré quant à la vigilance de la communauté à conserver son indépendance.

  10. @Laurent ,les publications marketing sont essentielles, puis c’est normal que les amies des amies fassent des articles élogieux sur le sujet.

    Après l’internaute, c’est quand même décortiqué sans avoir besoin d’une amie pour lui expliquer ce qu’il a devant les yeux.

    Pour tous ceux qui cherchant la simplicité d’un plugin bien conçus, en français avec un support réactif…

    • Merci Jean-Louis pour votre point de vue. Je vous rejoins sur l’utilité des amis pour soutenir des projets qui éclosent et de l’impérieuse nécessité de faire la promotion de nouveaux produits destinés à la vente. En ce qui me concerne, j’attend également de mes amis qu’ils me fassent sortir de mes illusions si le besoin s’en faisait sentir.
      D’un point de vue technique, et là je ne parle que pour moi, j’ai besoin d’articles comme celui d’Amaury (que je ne connais pas personnellement) pour me faire une opinion au delà des discours bienveillants des amis, des amis d’amis et des amis d’amis d’amis. J’aurais apprécié lire ailleurs, avant cet article, des échanges bienveillants d’amis proches de ce plugin visant à le montrer tel qu’il est, avec ses forces et ses limites. Être conscient des limites d’un plugin ne signifie pas pour autant ne pas apprécier le travail qui a été fait et reconnaître ses belles qualités. Je suis certain que nous utilisons tous des plugins dont nous savons à l’usage qu’ils ne sont pas parfaits.
      Sans vouloir faire d’analogie déplacée, c’est pour moi la même chose avec les humains qui me sont proches : je les aime avec leurs qualités mais également avec leurs petits travers. Peut-être même que je les aime encore plus du fait de leurs petits travers. Mais il ne viendrait à l’esprit d’aucun de mes amis de vouloir les dissimuler. Je les aime surtout pour ça : une grande intégrité intellectuelle.

  11. J’ai testé ce plugin et il faut dire qu’il est très intéressant, moins de maintenance car un seul plugin, les perfs sont au rendez-vous … Mais franchement le fait que certains fichiers soient stockés sur le serveur me rebute un peu aussi dans l’utilisation de ce plugin, j’espère qu’ils corrigeront celà dans les versions futures !

  12. @Pierre : Je pense que vous avez mal compris les propos d’Amaury. On ne stocke aucun fichiers sur notre serveur et encore moins sur celui des clients ;)

  13. Bonjour,
    pour ma part, j’utilise Varnish avec le plug-in Varnish HTTP Purge et cela fonctionne correctement.
    J’ai eu plusieurs problème suite à la volonté de désinstallation de WP Super Cache avec des messages d’erreurs.
    Maintenant concernant ce plug-in, il présente l’avantage d’avoir plusieurs fonctionnalité (cache, LazyLoad, minify…).
    Bref un tout en un.

    Un test serait quand même le bien venu afin de pouvoir comparer les différents plug-in cache + plug in annexes (LazyLoad, BWP Minify…).

  14. Bonjour,
    pour ma part, j’utilise Varnish avec le plug-in Varnish HTTP Purge et cela fonctionne correctement.
    J’ai eu plusieurs problème suite à la volonté de désinstallation de WP Super Cache avec des messages d’erreurs.
    Maintenant concernant ce plug-in, il présente l’avantage d’avoir plusieurs fonctionnalité (cache, LazyLoad, minify…).
    Bref un tout en un.

    Un test serait quand même le bien venu afin de pouvoir comparer les différents plug-in cache + plug in annexes (LazyLoad, BWP Minify…).

  15. Pour avoir acheter le plugin, ce qu fait toute la différence c est le tout en un, mais surtout le support de haute qualité. Pour moi rien que ce dernier point justifie l’investissement,

    Je suis pas un professionnel du code et les plugins de minifaction engendrent souvent des erreurs, qui sont parfois décuplées avec les mises à jour. Par le passé ça m’as tellement insupporté que j ai fini par ne plus mettre de plugin.

    Aujourd’hui j ai un outil qui fait le job que je lui demande, un support qui réponds au quart de tour si j’ai un problème. C’est tout bon.

  16. J’ai senti à la sortie de ce plugin « Made in France » une auto-censure car réalisé par 2 personnes assez présentes sur la WPSphère et qui ne se gêne pas pour flinguer certaines personnes sur le sujet.

    Personnellement, je trouve cela très très très dommage, qu’aucune version soit accessible gratuitement comme est la philosophie de WordPress.

    Je pense que les Francais sont frileux lorsqu’il s’agit de business : « Comment ca tu vas proposer gratuitement ton produit?! » Regardez Talend/Wampserver, il y a une version gratuite et la formation+options complémentaires payantes.
    Chacun y trouve son compte.

    Les points qui me feront pas franchir le cap de ce plugin sont:
    1. Le prix (trop excessif)
    2. L’enregistrement sur un serveur tiers donc installation dépendante
    3. Un sentiment de cobaye
    4. La conscédence des auteurs qui on pris un peu le melon

    • Bonjour Dren

      Encore en train de poster en anonyme pour râler ? Halalala …

      Je ne réponds pas « officiellement » à ce genre de personne qui se cache derrière son écran (une fois de plus).

      Allez bonne soirée ;)

  17. Non, non Julio c’est pas Dren ou qui sais-je, ça montre que tu n’as pas la conscience tranquille.
    Je suis un utilisateur de WordPress qui regarde les forums et qui voit ta tronche partout dans les commentaires…

    Ce que je ne comprends pas c’est la logique commerciale de ton plugin qui pour moi est un contre exemple de l’esprit de WordPress.
    Ce n’est pas tant le plugin payant qui me dérange mais c’est cette logique :
    - d’abonnement
    - de verrouillage d’utilisation + de la participation de la communauté
    - de jeux concours débile au x premiers qui saisissent le code…

    qui me pose un problème.

    Bref je te respecte pour le partage de connaissance que tu as fais preuve jusqu’ici mais ce Julio là est travesti maintenant…
    RIP

    Merci de ne pas filtrer la diversité d’opinion

    • Attention ce n’est pas « mon » plugin. Tu sembles me connaitre mais comme tu te caches je ne peux même pas m’imaginer qui tu es. Dommage déjà de venir me faire des leçons ici quand bien même tu te caches derrière un écran. Vais je te voir à Paris ou pas ? Tu sais donc que mes plugins au nombre de 22 je crois sont gratuits. Ce plugin est celui de Jonathan Buttigieg et je suis développeur dessus. Si cela avait été le mien il y aurait eu une version gratuite car je pense que le Freemium est mieux pour les affaires. Mais cette solution ne semble pas correspondre à ce que Jo avait en tête lors du lancement de ce plugin. Attention donc de ne pas me poser des étiquettes et a prendre du recul. Oui WordPress est gratuit mais cela ne veut pas dire que tout le travail fourni autour doit l’être aussi. Quand aux concours… La tu râles pour râler c’est nul. On a rien inventé si tu n’aimes pas tu ne participes pas et voilà point…

      • Oui c’est lâche de se cacher derrière l’anonymat et peu importe qui je suis finalement, non tu ne me verras pas à Paris bien que j’habite à 20 km de là.
        Je ne veux pas te faire la morale.
        Je suis reconnaissant ce que t’apportes à la communauté WordPress FR, c’est pourquoi je ne comprends l’attitude adoptée avec ce plugin…

        Ce qui est très frustrant c’est de voir tout ces publi-communiqués plus ou moins honnête et interressé alors qu’il est impossible de se faire un avis partial…

        Enfin je sais que c’est peine perdue…

        PA M

  18. Le freemium est un débat sans en être un.

    Comment pourrait-on faire de WP Rocket un plugin freemium ? On fait quoi, on propose un plugin sans options ? Avec juste le système de cache ? Que le LazyLoad ?

    Ce n’est pas que l’on ne veut pas faire du freemium, c’est qu’on ne peut pas en faire. On nous a posé la question 100 000 fois et on se l’ai posé autant de fois !

    On n’a même pensé à fragmenter en plusieurs plugins. Chose que l’on fera prochainement avec 2 plugins gratuits : LazyLoad & Optimisation du poids des images.

    Un plugin de cache, ce n’est pas un plugin de newsletter où l’on pourrait avoir des templates supplémentaires ou un nombre d’abonnés illimités en passant en freemium.

    Mais pourquoi raler du freemium ? WPML fait du freemium ? Gravity Forms fait du freemium ? Tous les plugins présents sur CodeCanyon font du Freemium ?

    Réponse : Non.

    « Ce n’est pas tant le plugin payant qui me dérange mais c’est cette logique :
    - d’abonnement »

    Gravity Forms, WPML et d’autres plugins premium fonctionnent aussi en abonnement.

    Et attention à « abonnement », il s’agit uniquement des mises à jour et du support. Les plugins fonctionnent à vie ;)

    « - de verrouillage d’utilisation + de la participation de la communauté »

    De quel verrouillage parle t-on ?

    Pour la communauté, ça montre qu’on est solidaire. Quand l’un d’entre eux lancera son propre service/plugin, je serai le 1er a relayé l’info pour les aider.

    - de jeux concours débile au x premiers qui saisissent le code… »

    Vous ne devez pas faire souvent les soldes ^^

  19. Concernant la licence payante de WP-Rocket, je pense que vous êtes un peu du mauvais côté de la ligne blanche.
    Wordpress est sous licence GPL…. tout les plug-ins et les thèmes sont automatiquement sous cette licence… Ce qui ne vous empêche pas de le vendre, mais les codes sources devraient être accessibles, non offusqués et ceux gratuitement.

    • Hello
      les codes sources devraient être accessibles, non offusqués et ceux gratuitement.
      3 rappel sur la GPL :
      1- Les termes de la GPL autorisent toute personne à recevoir une copie d’un travail sous GPL.
      2- les copies distribuées, incluant les modifications, doivent être aussi sous les termes de la GPL.
      3- Le droit de redistribuer est garanti seulement si l’utilisateur fournit le code source de la version modifiée.
      As tu fait la demande du code source auprès de notre équipe ? Perso, ça ne me dit rien.
      Si jamais tu modifies, j’attends ton retour ;)
      ps : contacte nous merci

  20. Bonjour,
    dire que le plugin est à 29€ est que c’est illimité, pas d’abonnement, c’est limite, de mon point de vue, un plugin est comme WP, les thèmes, il doit être maintenu à jour, pour optimiser déjà la compatibilité avec la dernière version de WP, puis pour voir les améliorations du plugin, donc on doit tous les ans, payer 29€.
    Themeforest vend ses thèmes, on paye une fois et on a les mises à jour pris dedans.
    WPLM fait comme WP Rocket, tous les ans ou une offre à vie, Gravity Forms pareils, Code Canyon je ne sais pas.
    tout travail mérite salaire, il est normal que vous soyez récompensé de votre travail.
    Je suis partagé, tout le monde n’a pas les moyens de payer pour un hébergement, plus un plugin, voir un thème, etc..
    Moi je reconverti tout en Francs, un vieux, ça fait 190.228 Francs, pas une petite somme.

  21. Waow ! Super méga-test !!
    Le front-end sur mon serveur tourne avec Nginx. Je vais tester les alternatives que tu proposes.

  22. @Magicyoyo : WP Rocket support NGNIX depuis la 2.0 en fait, l’article est gravement obsolète et derait subir une mise à jour et des suppressions de certains passages.(@amaury : merci de nous contacter à ce sujet, rapidement)

  23. Bonjour,
    faire une mise à jour de l’article en bas de l’article serait bien mais surtout pas supprimer des passages, non cela montre que le plugin évolue et que vous ne restez sur vos acquis.
    J’ai lu que le plugin coutait 29€ à l’achat mais que le renouvellement était de 9€, vrai ou faux ?
    Merci

    • Bonjour, c’est faux, où as-tu lu ça ?
      Il y a une phrase que je souhaite faire supprimer tout de même, elle est hors sujet et ne devrait pas exister.
      Merci !

      • Bonsoir,
        Sur un site au fil des recherche via Google, c’est bien dommage, car là le plugin commençait à m’intéresser.
        j’ai pris le temps de chercher là
        http://wpastuces.com/267-wp-rocket-plugin-smart-cache-wordpress/
        « Edit : il s’agit de 29€ pour 1 an de support et update, ensuite le plugin continu a fonctionner. Le renouvellement vous coûtera 9€. Il existe des licences Business et Pro pour plusieurs sites, qui permettent de diminuer ce prix pour chaque site. »

        C’est l’auteur de l’article qui décide, vous ne pouvez pas forcer un auteur a supprimer une phrase.

  24. @darknote :

    « C’est l’auteur de l’article qui décide, vous ne pouvez pas forcer un auteur a supprimer une phrase. »

    Sauf quand la phrase en question incite au piratage de notre produit ;)

    Pour le renouvellement, vous avez toutes les réponses à vos questions dans notre FAQ : http://support.wp-rocket.me/faq/

    • Bonjour,
      Vous parlez de quelle phrase?

      Merci pour le lien, le prix de renouvellement est plus proche du prix que je verrais pour l’achat. Pas le porte monnaie assez lourd pour franchir le pas.

  25. « Vous parlez de quelle phrase? »

    Le but n’est pas de polémiquer dans les commentaires sur ce fait gênant. L’auteur est prévenu depuis plusieurs semaines…

    • L’article a été actualisé.

      1. La ligne relative au contrôle de licence a été supprimée.
      2. Un disclaimer, rapide, a été ajouté dans l’entête de l’article.

      Je dois avouer n’avoir jamais observé de telles pratiques pour un article de blog réalisant la critique d’un produit ou d’un service.
      Cela a au moins le mérite de montrer que les auteurs de la solution sont actifs et attentifs à leur produit.