Examen du serveur JPEG.webpmini

Anonim

Après avoir eu la chance de tester et de revoir le logiciel JPEG.webpmini Pro, j'ai réalisé à quel point ce logiciel est puissant non seulement pour exporter des images et faire partie d'un flux de travail Lightroom, mais aussi pour de nombreuses autres utilisations, y compris l'optimisation d'images déjà présentes sur notre grands périphériques de stockage. Une autre utilisation à laquelle j'ai immédiatement pensé était le serveur Web d'où provient le trafic de Photography-Secret.com. Étant donné le trafic quotidien de Photography-Secret.com dans le monde entier et le fait que les images représentent à elles seules environ 5 téraoctets de trafic par mois, l'idée de pouvoir compresser des images JPEG.webp à l'aide du moteur JPEG.webpmini était quelque chose. que je voulais vraiment mettre en œuvre le plus tôt possible. Je me suis donc lancé dans un nouveau projet - pour économiser du trafic et de l'argent à long terme pour PL, en utilisant le serveur JPEG.webpmini.

Attention photographes: il s'agit d'une revue très technique de logiciels qui n'est pas liée à la photographie. J'ai décidé de publier la critique chez PL, car je pense que d'autres sites Web consacrés à la photographie pourraient énormément bénéficier de la mise en œuvre du serveur JPEG.webpmini.

1) Présentation de l'environnement du serveur

Avant de passer à l'examen, je voudrais souligner quelques informations potentiellement importantes sur la configuration de mon serveur Web. Tout d'abord, j'exécute CentOS Linux sur chaque serveur (et il y en a quelques-uns). Les deux serveurs Web principaux qui gèrent les appels PHP à partir de l'équilibreur de charge sont l'endroit où j'ai installé le serveur JPEG.webpmini, bien que seul le premier compte vraiment, car c'est celui qui gère tous les téléchargements sur le site (WordPress ne peut pas gérer cela directement, donc il est uniquement possible de surveiller les appels wp-admin et de les diriger vers le serveur approprié via nginx / apache). Malheureusement, il n'y a pas de moyen facile d'exécuter plus d'un serveur WordPress sans tracas de téléchargement de fichiers, car il n'est pas conçu pour être utilisé dans un environnement de cluster (tout déplacer vers AWS avec des instances de serveur exécutant EC2, RDS exécutant la base de données et S3 gérant le les fichiers seraient une bonne solution, mais après l'avoir testée, ce n'était en aucun cas une solution bon marché, en particulier une fois que vous avez commencé à générer quelques serveurs EC2 qui géreraient la charge back-end). Par conséquent, j'ai synchronisé tous les téléchargements via rsync. Ce n'est pas une solution élégante, mais cela fonctionne assez bien. J'ai rsync qui surveille le dossier «wp-content», donc toutes les modifications sont répliquées dans un sens (en gros, une fois que les images sont téléchargées sur server01, elles sont automatiquement récupérées par server02). La synchronisation prend une ou deux secondes, mais une fois que cela se produit, les images sont facilement diffusées pour les demandes de l'équilibreur de charge.

Tous les appels au serveur Web sont gérés par un équilibreur de charge, qui ne sert que le trafic Web https. Toutes les images sont gérées par un CDN externe. La principale raison de la mise en œuvre de JPEG.webpmini était de réduire les coûts CDN, qui n'augmentent que chaque mois à mesure que nous continuons à publier plus de contenu.

Gardez à l'esprit que votre serveur Web doit exécuter une version Linux - le serveur JPEG.webpmini ne fonctionne pas sur les serveurs Windows. Voici la liste des plates-formes de serveur prises en charge.

2) Installation du serveur JPEG.webpmini

L'installation du serveur JPEG.webpmini est très simple, surtout si vous exécutez RHEL, CentOS et d'autres distributions Linux populaires. Pour mon serveur CentOS, JPEG.webpmini a fourni un fichier RPM, donc c'était une installation facile avec une seule commande. Une fois le fichier binaire installé (/ usr / bin / jpeg.webpmini par défaut), l'étape suivante consistait à copier le fichier de licence .jpeg.webpmini.cfg dans le répertoire personnel de l'utilisateur. À partir de là, exécuter «jpeg.webpmini» devrait générer quelque chose comme ce qui suit:

===============================
Démarrez jpeg.webpmini 3.14.2.84235
===============================
L'option -f est requise: -f =
Utilisez -help pour obtenir de l'aide

===============================
Terminer jpeg.webpmini 3.14.2.84235
===============================

Mes premiers tests ont commencé avec la version 3.13 du serveur JPEG.webpmini, mais après quelques modifications demandées à l'exécutable, JPEG.webpmini a fourni un fichier 3.14 RPM mis à jour. L'ajout majeur à la version 3.14 est la possibilité de sauter des fichiers déjà optimisés, ce qui était un gros problème pour moi, car j'utilise la version de bureau du logiciel et je ne voulais pas que le serveur JPEG.webpmini ré-optimise les images JPEG.webp téléchargées.

3) Gestion des fichiers d'image WordPress

Lorsqu'une image est téléchargée sur WordPress, les scripts d'administration utiliseront GD ou ImageMagick pour traiter ces images. Par défaut, WordPress crée des images de trois tailles, en plus de l'image téléchargée (miniature, taille moyenne et grande taille), mais en fonction du nombre d'appels add_image_size pouvant être ajoutés par le thème et les plugins, il peut y en avoir beaucoup plus! Pour cette raison, un seul téléchargement d'image peut générer un tas de fichiers sur le serveur, ce qui permet au dossier Uploads de se développer très rapidement. Et ces images plus petites sont créées par GD ou ImageMagick, de sorte que les fichiers par défaut seront supprimés à la fois des profils de couleur ICC et des données EXIF, ce qui n'est pas souhaitable sur un site Web de photographie. Ils ne seront pas non plus correctement optimisés pour la taille, car ni GD ni ImageMagick n'ont un algorithme intelligent comme JPEG.webpmini afin de pouvoir compresser correctement les images JPEG.webp. En fait, WordPress fait un travail assez horrible avec le redimensionnement des images, ce qui entraîne souvent des images mal colorées (en raison du décapage des profils ICC), douces et boueuses (en raison d'une forte compression). Pour éviter ce problème chez PL, je n'utilise ImageMagick que pour optimiser les images, avec des options spéciales. Nous supprimons uniquement les données EXIF ​​des vignettes et les compressons un peu plus agressivement pour une expérience de navigation rapide. Une fois dans un message, ni les profils ICC, ni les données EXIF ​​ne sont supprimés des images plus grandes afin de les rendre aussi belles que possible. De cette façon, nous ne forçons pas nos lecteurs à cliquer sur une image pour voir la «bonne version» - les images semblent cohérentes des aperçus aux tailles natives téléchargées.

Par conséquent, afin de tirer pleinement parti du serveur JPEG.webpmini, il est préférable d'exécuter l'exécutable pour chaque processus de redimensionnement - pas seulement pour la version unique téléchargée, car vous voulez que chaque fichier soit optimisé par le moteur, qu'il s'agisse d'un miniature, moyenne ou grande version de l'original. Cela signifie essentiellement que JPEG.webpmini devrait intercepter chaque appel à image_resize.

4) Serveur JPEG.webpmini et intégration WordPress

Malheureusement, JPEG.webpmini ne fournit pas de plugin qui s'intègre automatiquement à WordPress pour ce faire, j'ai donc dû trouver une solution par moi-même. J'ai commencé avec la base de code du plugin ImageMagick Engine (un plugin assez obsolète, mais cela fonctionne toujours), puis j'ai ajouté des appels à l'exécutable JPEG.webpmini dans la fonction ime_im_cli_resize (j'exécute une version en ligne de commande d'ImageMagick au lieu d'un module PHP). Si cette version modifiée du plugin vous intéresse, faites-le moi savoir dans la section commentaires ci-dessous et je vous enverrai le fichier du plugin. Je ne sais pas si les gens de JPEG.webpmini prévoient de publier un plugin WordPress, mais je serais heureux de contribuer au code pour une bonne cause.

Le code fonctionne et il a été testé avec JPEG.webpmini 3.14. Dès que chaque version redimensionnée est créée, le code optimise d'abord ces images, puis il optimise et écrase l'image JPEG.webp d'origine.

5) Résultats du test du serveur JPEG.webpmini

Il y a eu beaucoup de mumbo jumbo technique jusqu'à présent, alors passons à la viande. Combien d'espace disque ai-je pu récupérer et combien ai-je économisé en coûts CDN? Afin d'exécuter l'exécutable JPEG.webpmini de manière récursive sur chaque dossier, j'ai dû demander un script aux ingénieurs JPEG.webpmini, qu'ils ont fourni très rapidement. Le fichier fourni était un script Python appelé «jpeg.webpmini_recursive.py», qui ne nécessitait que deux commandes - une pour saisir le dossier source et une pour saisir le dossier cible (j'ai modifié le script un peu après avoir obtenu la nouvelle version de RPM qui peut sauter automatiquement images JPEG.webp déjà optimisées). Après avoir tout sauvegardé, j'ai créé un dossier appelé "uploads_jpeg.webpmini" et c'est ce que j'ai utilisé comme dossier cible. J'ai exécuté le script et il a fallu un certain temps pour parcourir chaque fichier. Je suis revenu après quelques heures et le script a fini de s'exécuter.

Étant donné que JPEG.webpmini n'optimise que les images JPEG.webp et qu'il ne touche pas les téléchargements de fichiers PNG, GIF ou autres tels que la vidéo, je devais m'assurer de recopier le dossier résultant dans mon dossier de téléchargements. Encore une fois, assurez-vous de tout sauvegarder complètement avant de franchir cette étape, car elle est irréversible. Avant de faire cela, j'ai changé récursivement les permissions sur le dossier uploads_jpeg.webpmini en exécutant «chown -R nobody: nobody / uploads_jpeg.webpmini». Ensuite, la commande suivante était «/ bin / cp -Rpf uploads_jpeg.webpmini / * uploads /», qui écrasait les fichiers image existants avec leurs versions optimisées JPEG.webpmini.

Jetons un coup d'œil à l'avant et à l'après. Voici à quoi ressemblaient mes dossiers avant de copier tout le contenu:

 

du - profondeur-max = 1 | sort -k2 1252 ./2006 5272 ./2007 23332 ./2008 154872 ./2009 819580 ./2010 599084 ./2011 2124952 ./2012 2176548 ./2013 4504720 ./2014 6164472 ./2015 3812759 ./2016 559012 ./ 2017 Taille totale: 20945855

Environ 21 gigaoctets d'images. Voyons maintenant à quoi ressemblait le dossier une fois que toutes les images ont été optimisées par JPEG.webpmini:

 

du - profondeur-max = 1 | sort -k2 1000 ./2006 2852 ./2007 15972 ./2008 127708 ./2009 647896 ./2010 461800 ./2011 1099676 ./2012 1252836 ./2013 3049696 ./2014 4378464 ./2015 2858628 ./2016 479416 ./ 2017 Taille totale: 14,375,944

Whoa, c'est seulement 14,4 gigaoctets maintenant! Rien que dans l'espace du disque dur, j'ai pu récupérer plus de 6,5 Go d'espace, ce qui se traduit par environ 31% d'économies d'espace. C’est en gros un tiers de ma facture CDN, ce qui est un gros chiffre. Et gardez à l'esprit que les deux dernières années et plus n'ont pas permis de gagner autant d'espace que précédemment, car j'ai déjà commencé à optimiser mes images sur mon bureau avec JPEG.webpmini Pro avant de les télécharger, donc les chiffres que vous voyez sont des téléchargements par d'autres membres de l'équipe qui n'utilisent pas JPEG.webpmini.

Voici un exemple de rapport de synthèse de JPEG.webpmini pour juin 2012:

----------------------------------
INFO: Rapport récapitulatif pour le dossier photographylife.com/wp-content/uploads/2012/06 (y compris les sous-dossiers):
INFO: Nombre total de fichiers: 372
INFO: Taille totale des fichiers d'entrée: 42900 Ko
INFO: Taille totale des fichiers de sortie: 28480 Ko
INFO: Taux de recompression: 1,51X (34% d'économie)
INFO: ----------------------------------

Différents dossiers ont donné des nombres différents, mais en moyenne, ils se situaient entre 30 et 35%, ce qui est beaucoup, étant donné que notre équipe est assez bien informée pour garder des fichiers de petite taille pendant le processus d'exportation (nous conservons généralement nos paramètres d'exportation au niveau 10 dans Photoshop. , ce qui équivaut à la «qualité» 77-84% de Lightroom, selon notre article Niveaux de compression JPEG.webp dans Photoshop et Lightroom).

5) Paramètres de qualité et de métadonnées du serveur JPEG.webpmini

Pour les sites qui ne se soucient pas nécessairement de préserver les images JPEG.webp de haute qualité avec leurs métadonnées, JPEG.webpmini peut en fait optimiser les images de manière beaucoup plus agressive. Je ne voulais pas que les images JPEG.webp aient une apparence pire que celle téléchargée à l'origine, j'ai donc conservé le paramètre par défaut «qual = 0», qui préserve la meilleure qualité. D'autres sites peuvent choisir de fonctionner avec une qualité élevée ou moyenne, ce qui réduira de manière beaucoup plus agressive l'empreinte des fichiers JPEG.webp. En outre, vous pouvez également supprimer complètement toutes les métadonnées avec la commande «rmt = 1» et si cela ne suffit pas, il existe même une option pour forcer la sortie JPEG.webp progressive sur chaque image. Je suis sûr que les sites de médias sociaux comme Facebook utilisent fortement ces outils, car les images et les vidéos représentent une part importante de leurs factures d'hébergement. Pour une liste des commandes disponibles avec le serveur JPEG.webpmini, veuillez visiter cette page.

6. Conclusion

Bien que le produit JPEG.webpmini Server ne soit certainement pas destiné aux photographes, le logiciel est un outil très polyvalent pour ceux qui possèdent de grands sites Web avec beaucoup d'images et de trafic. Comme le montre mon projet d'implémentation, JPEG.webpmini Server a pu économiser plus de 6,5 gigaoctets d'espace, soit environ 31% d'espace et d'économies de coûts CDN, ce qui est beaucoup pour une entreprise de toute taille. Au prix de départ de 199 $ par mois, JPEG.webpmini Server n'est pas bon marché pour une petite entreprise, mais pour une entreprise en croissance avec une grande empreinte d'hébergement où une seule instance de serveur peut coûter plus cher que cela chaque mois, le produit pourrait valoir un coup d'œil sérieux. . Si vous faites partie d'une société d'hébergement, si vous possédez un site Web contenant beaucoup d'images comme PL, ou si vos coûts CDN deviennent scandaleux, vous voudrez peut-être contacter les gens de JPEG.webpmini et leur parler de la façon dont ils peuvent T'aider. Pour commencer, vous pouvez essayer cette page, où vous pouvez entrer votre site Web et voir combien vous pouvez espérer économiser en coûts CDN.

Si vous avez des questions sur l'un des éléments ci-dessus, n'hésitez pas à me laisser un commentaire ci-dessous.

Serveur JPEG.webpmini
  • Caractéristiques- 100% / 100
  • Valeur- 100% / 100
  • Facilité d'utilisation- 80% / 100
  • Vitesse et performances- 100% / 100
  • Stabilité- 100% / 100
  • Support- 100% / 100

Photography-Secret.com Note globale

4.8- 96% / 100