IBM Cloud Docs
Compression et optimisation

Compression et optimisation

IBM Cloud® Internet Services utilise la compression GZIP et Brotli pour différents types de contenu afin d'améliorer les temps de chargement des pages. La compression est appliquée en fonction du navigateur User-Agent.

Si vous utilisez déjà GZIP, CIS accepte vos paramètres à condition que les en-têtes appropriés soient transmis dans la réponse du serveur.

CIS ne prend en charge GZIP que lorsqu'il communique avec votre serveur d'origine, et peut fournir du contenu qui l'est :

  • Compression à l'aide de GZIP ou Brotli
  • Non compressé

CIS le proxy inversé de l'entreprise peut convertir les formats compressés et non compressés. Par exemple, il peut récupérer un contenu compressé au format GZIP à partir de votre site d'origine et le servir non compressé aux clients. Ce processus se déroule indépendamment de la mise en cache.

CIS supprime l'en-tête Accept-Encoding et ignore sa valeur.

Types de contenus compressés

En plus de servir les contenus périmés et de minifier les fichiers CSS, JS et HTML, CIS compresse les réponses avec GZIP ou Brotli pour les navigateurs compatibles. CIS renvoie des réponses codées en GZIP ou en Brotli aux clients et navigateurs compatibles pour les types de contenu suivants :

text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/xml+rss
application/vnd.api+json
application/x-protobuf
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast
application/manifest+json
application/ld+json

Si vous ne souhaitez pas qu'une réponse particulière de votre serveur d'origine soit encodée, vous pouvez définir cache-control : no-transform pour désactiver l'encodage au niveau de votre serveur web d'origine.

Activation de la compression Brotli

Pour activer la compression Brotli, procédez comme suit :

  1. Connectez-vous à votre compte CIS.
  2. Choisissez le domaine approprié.
  3. Cliquez sur l'onglet Performance.
  4. Cliquez sur l'onglet Avancé.
  5. Basculer le commutateur Brotli sur On.

Minification pour HTML, JavaScript, et CSS

CIS utilise Minify web content pour supprimer tous les caractères inutiles des fichiers HTML, JavaScript et CSS, sans affecter leur fonctionnalité.

  • La minimisation CSS et JavaScript fonctionne uniquement sur des fichiers CSS et JS mis en cache.
  • Lorsque CIS renvoie un HIT de cache pour le fichier, celui-ci est renvoyé aux navigateurs sous forme minifiée, ce qui permet à CIS de fournir un résultat de minification complet.
  • Pour appliquer les changements de minification, purgez votre cache CIS.

Compression d'optimisation de la taille d'image

CIS optimise les images mises en cache dans son réseau périphérique en supprimant les métadonnées et en appliquant une compression avec ou sans perte pour accélérer la diffusion. Les images hors site ne sont pas optimisées.

La compression pour l'optimisation de la taille des images n'est disponible que sous la forme d'une règle de page dans la console. Le paramètre au niveau du domaine est disponible dans l'interface de ligne de commande.

Options de compression d'optimisation de la taille d'image

Les options de compression d'optimisation de la taille d'image sont décrites en détail dans les sections ci-après.

Sans perte

  • Supprime la plupart des métadonnées (par exemple, les données EXIF).
  • Conserve tous les détails visuels.
  • La sortie décompressée correspond à l'image originale.

Avec perte

  • Supprime les métadonnées et réduit la taille de l'image d'environ 15 %.
  • Certaines données originales sont définitivement perdues.
  • Pour les PNG, les résultats sont en fait les mêmes que pour les PNG sans perte.

Les modes Lossless et Lossy tentent de supprimer autant de métadonnées que possible, mais une suppression complète peut s'avérer impossible en raison de facteurs tels que la mise en cache.

WebP

  • WebP assure une compression supérieure :
    • Environ 26% plus petit que le PNG (sans perte)
    • 25-34% plus petit que JPEG (avec perte)
  • CIS crée et met en cache les versions de WebP.
  • WebP n'est servi que si :
    • L'en-tête Accept du navigateur comprend WebP.
    • L'image compressée est nettement plus petite que la version avec ou sans perte.

Exemple d'en-tête Accept pris en charge :

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Actuellement, WebP est pris en charge uniquement dans les navigateurs Firefox, Google Chrome et Opera.

Désactivez WebP sur votre site d'origine pour éviter les problèmes de mise en cache avec les navigateurs qui ne prennent pas en charge WebP.

Vérification de l'optimisation de la taille des images

Activez l'optimisation de la taille d'image à l'aide d'une règle de page ou des paramètres de domaine de l'interface de ligne de commande.

CIS ajoute les en-têtes suivants aux images optimisées :

cf-bgj: imgq:85

cf-polished: qual=85, origFmt=jpeg, origSize=95005

cf-cache-status: HIT

L'en-tête cf-bgj confirme que CIS a appliqué l'optimisation de la taille de l'image et renvoie le paramètre de qualité de l'image (imgq). L'en-tête cf-polished représente l'état de l'optimisation de la taille de l'image et renvoie le paramètre de qualité de l'image (qual) et la taille originale (origSize). L'en-tête cf-cache-status confirme que l'image a été mise en cache et que l'optimisation de la taille de l'image peut être appliquée.

WebP la conversion ne change pas l'image URL. L'en-tête Content-Type HTTP indique au navigateur le format d'origine d'une image.

Statuts Cf-Polished communs

Le tableau ci-après répertorie les statuts Cf-Polished communs et montre comment traiter les incidents les concernant. Si aucun en-tête Cf-Polished n'est renvoyé, essayez d'utiliser la purge de cache à fichier unique pour purger l'image.

Statuts Cf-Polished communs
Statut Définition Recommandation
input_too_large L'image est trop grande ou trop complexe pour être traitée et nécessite une résolution inférieure. Utilisez des images PNG ou JPEG de moins de 1 000 px et de moins de 10 Mo.
not_compressed ou not_needed L'image a été entièrement optimisée au niveau du serveur d'origine et aucune compression n'a été appliquée.
webp_bigger Polish a tenté de convertir l'image en WebP, mais l'image a été soit optimisée au niveau du serveur d'origine, soit créée avec un paramètre de faible qualité, soit les deux. La version WebP n'existant pas, l'état est défini sur la version PNG ou JPEG de la réponse.
cannot_optimize ou internal_error L'image est corrompue ou incomplète au niveau du serveur d'origine. Téléchargez une nouvelle version de l'image sur le serveur d'origine.
format_not_supported Le format de l'image n'est pas pris en charge (par exemple, BMP, TIFF), le serveur d'origine utilise un logiciel d'optimisation supplémentaire qui n'est pas compatible avec Polish, ou les deux. Essayez de convertir l'image d'entrée dans un format compatible avec le web (par exemple, PNG, JPEG), désactivez tout logiciel d'optimisation supplémentaire sur le serveur d'origine, ou les deux.
vary_header_present Le serveur web d'origine a envoyé un en-tête Vary avec une valeur autre que accept-encoding. Si le serveur Web d'origine tente de prendre en charge WebP, désactivez WebP sur le serveur Web d'origine et laissez Polish effectuer la conversion WebP.

L'optimisation fonctionne toujours lorsque accept-encoding n'est pas la seule valeur de l'en-tête Vary.