Astuce EzPublish pour optimiser les images

Je vous avais parlé de plugins pour wordpress et symfony en janvier, puis de nouveau en mars. Ces plugins ne sont généralement pas parfaits. Ils ajoutent un filtre PHP au téléchargement des ressources statiques, ou utilisent des conversions avec perte sur les images (si je soutiens l’idée de dégrader un peu les images, le faire automatiquement sans contrôle humain derrière est assez risqué).

Par contre j’apprécie beaucoup l’arrivée de ces plugins pour deux raisons. D’abord ils montrent une prise de conscience globale de la problématique des performance, et surtout ils posent les premières briques d’une démarche performance intégrée aux outils de publication. Si pour l’instant rien ne remplace l’expert et le consultant sur ces sujets, rien ne me ferait plus plaisir que de savoir qu’on puisse s’en passer à l’avenir. Il est finalement anormal que quelqu’un qui met juste en place un blog ou un CMS ne puisse pas avoir quelque chose de performant par défaut.

C’est dans cet esprit que je peux vous parler d’une petite idée de configuration, cette fois pour le CMS ezPublish. Là aussi ce n’est pas parfait, il s’agit juste d’un filtre pour envoyer les images à travers imagemagick avec des paramètres pour retirer les métadonnées, ça ne concerne que les miniatures, mais ça existe et on en parle. En soi c’est déjà une réussite.

Si votre outil a lui aussi cette notion de filtre, que ce soit pour les images générées comme les miniatures ou pour les images téléchargées dans l’outil,  je ne peux que vous encourager à mettre en place ce genre de solutions. J’aurai tout de même une préférence pour OptiPNG plutôt que ImageMagick.

Publié par edaspet

Plus d'informations sur mon profil en ligne

5 réponses sur « Astuce EzPublish pour optimiser les images »

  1. Je te remercie pour cet article intéressant.
    A vrai dire j’ai récemment eu cette réflexion concernant un projet. J’ai en effet après moultes problèmes et erreurs php réussi à faire tourner jpegtran lors de chaque upload avec la commande relativement compréhensible suivante:
    exec(« jpegtran -copy none -optimize -perfect -progressive $src $cible »);
    Je me demande pourtant si ce genre de procédé ne risque pas de dégrader les performances dans un premier temps. En effet, à chaque upload le serveur devra faire une compression lossless.
    Avec des petits tests en local, c’est encore réalisable avec des jpeg (et encore je ne sais pas ce que ça donne si des centaines de personnes upload en même temps) mais par contre avec du png et des logiciels comme pngcrush ou optipng, le temps de calcul est réellement long si on met les options de « compression » au maximum.
    Donc, après un trèèès long commentaire vient enfin la question:
    Est-ce qu’il ne s’agit pas là de ces améliorations qui ne le sont finalement pas ? Des améliorations qui ont au final l’effet inverse…

  2. J’avoue que je me place dans la situation confortable où les ressources serveurs ne sont pas un problème majeur. Sinon il faut faire des compromis, et effectivement optipng n’est pas forcément a priorité.

    Par contre rien ne t’empêche de gérer une file de traitement offline asynchrone. Tu acceptes l’upload, tu l’utilises tel quel, mais en différé, via une file (histoire de ne pas saturer le serveur de traitement), tu vas recompresser les images et les optimiser. Si tu as du délai parce que trop d’upload au même moment, les images resteront non optimisées un peu plus longtemps, c’est tout.

    De manière générale, indépendamment de l’optimisation des images, il est toujours bon de gérer des traitements hors ligne et asynchrones. Un exec() directement sur l’upload c’est effectivement dangereux.

  3. Je vois, ça me semble en effet être une solution déjà plus réaliste. J’avais également pensé à une solution du même type sans pour autant la tester. Il s’agirait de faire ces optimisations lors des heures creuses (par exemple de 3h à 5h du matin en FR) en faisant appel à un fichier PHP « compressant » les images uploadées pendant la journée.
    Bref… quoi qu’il en soit il faudra dans tout les cas passer par des phases de tests pour voir quelle solution est la plus adaptée.
    Merci en tout cas pour tout ces précieux conseils que tu prêches à travers ce site 😉

Les commentaires sont fermés.