Optimisation des images générées par eZ Publish

Google Page Speed est sorti il y a quelques jours. Ces deux outils permettent de vérifier différents critères ayant un impact sur le temps de chargement ressenti par l'utilisateur. En utilisant Google Page Speed sur ma dernière création, Bioutifoul Photos (site fermé depuis), j'ai remarqué que les miniatures des photos générées par eZ Publish via ImageMagick n'étaient pas optimisées, en effet elles contiennent toutes les informations EXIF de l'image originale ce qui est rarement utile (a priori GD ne sait pas conserver les informations EXIF donc le problème ne se pose pas).

Pour remédier à cela, il est possible de configurer un filtre spécifique (par exemple nommé optimize ) qui va rajouter l'option -strip à convert lors de la création des variations d'image pour supprimer un maximum de choses dans l'image puis à rajouter ce filtre dans les filtres utilisés pour créer une variation donnée. Cette opération est faisable en écrivant les lignes suivantes dans settings/override/image.ini.append.php :

[ImageMagick]
IsEnabled=true
ExecutablePath=/usr/bin
Executable=convert

Filters[]=optimize=-strip

[mini]
Filters[]
Filters[]=geometry/scalewidthdownonly=200
Filters[]=optimize

Dans cet exemple, seules les images générées en format mini seront optimisées. Une autre solution plus globale consiste à ajouter l'option -strip pour toutes les variations en utilisant le paramètre PreParameters dans le même fichier de configuration.

Dans les deux cas, pour que les images existantes soient régénérées, il faut lancer la commande suivante :

$ php bin/php/ezcache.php --clear-tag=image

Attention, sur un site avec beaucoup d'images et un peu d'audience, la régénération des variations peut être extrêmement gourmande en ressources.