Test fiable si un serveur gzips contenu

Je semble obtenir des résultats différents en testant si le contenu est servi par compression via le mod_deflate d’Apache.

Je teste la même URL et sur un PC j’ai Content-Encoding:gzip présent dans les en-têtes de réponse, sur un autre PC qui a une configuration presque identique (version de Windows, versions de navigateur, etc.) Je ne le fais pas et la page se charge plus lentement et a une plus grande taille. L’en-tête de requête Accept-Encoding:gzip, deflate, lzma, sdch, br est présent dans les deux cas.

  1. Quelqu’un peut-il recommander un moyen fiable de tester que le contenu est compressé? Par fiable je veux dire – autre que Chrome Dev Tools.
  2. Pourquoi certains utilisateurs peuvent-ils avoir tout le contenu même s’ils demandent un fichier gzipé? Est-ce lié au serveur ou au client? Comment puis-je m’assurer que 100% de mes utilisateurs obtiennent du contenu compressé?

Quelqu’un peut-il recommander un moyen fiable de tester que le contenu est compressé? Par fiable je veux dire – autre que Chrome Dev Tools.

[Answer] – Un moyen fiable de tester serait de trouver la taille du contenu récupéré à partir du serveur et de comparer avec la longueur du contenu reçu. Selon ce post ( longueur du contenu lors de l’utilisation de la compression HTTP ), la longueur du contenu sera la taille du contenu compressé.

Si le contenu est du texte, le taux de compression sera de 3: 1 ou plus. Cependant, si vous envoyez une image compressée, cela sera beaucoup moins. Dans tous les cas, si la compression fonctionne, elle sera supérieure à 1: 1.

Pour la configuration du test, vous pouvez héberger un dataset de test telles que des fichiers texte, des images sur Apache et des informations sur leurs tailles. Peut-être que le nom du fichier pourrait être leur taille comme 1024bytes.txt. Côté client, vous pouvez envoyer une demande pour récupérer les données et comparer les en-têtes de réponse (Content-Length) pour vérifier la taille du contenu. Vous pouvez automatiser cela en utilisant des outils tels que moka & chai.

Pourquoi certains utilisateurs peuvent-ils avoir tout le contenu même s’ils demandent un fichier gzipé? Est-ce lié au serveur ou au client? Comment puis-je m’assurer que 100% de mes utilisateurs obtiennent du contenu compressé?

[Answer] – Vous ne pouvez vous en assurer que du côté du serveur. Il y aura des limitations côté client et des bogues. Par exemple, https://support.microsoft.com/en-us/help/871205/internet-explorer-may-not-decompress-http-content-when-you-visit-a-web-site . Comme vous pouvez le constater, un bogue Windows peut entraîner une défaillance de la compression. Ce bogue ou un bug similaire peut probablement expliquer pourquoi vous voyez un comportement différent sur une machine différente.

Comment réparons nous ça?

Vous pouvez comparer votre configuration de test avec un fournisseur de données fiable. Dans votre cas, vous l’avez vérifié avec http://www.bing.com. Une fois que vous avez vérifié que votre configuration de test et votre client fonctionnent correctement avec une source fiable, testez-la avec votre serveur Apache et certifiez.

En supposant que le problème est un proxy de mise en cache, comme indiqué dans les commentaires.

Il y a quelques options.

  1. Apache peut append des en-têtes http au contenu qui informe les caches de ne pas stocker de contenu. Mettez les éléments suivants dans votre bloc VirtualHost

    En-tête défini Cache-Control “privé”

    Aucune promesse que ce qui précède ne fonctionnera, c’est un avis qui peut être ignoré par un proxy.

  2. Une manière plus fiable serait d’utiliser HTTPS, cela empêche presque tous les mandataires de lire autre chose que le nom d’hôte, il leur est donc impossible d’agir en tant que cache. Les certificates SSL sont assez bon marché, mais vous pouvez tester gratuitement en utilisant d’abord un certificate auto-signé.

Il existe des instructions pour créer un certificate auto-signé ici. Ensuite, copiez votre bloc VirtualHost et collez-en un nouveau en modifiant le port en 443 et en ajoutant ce qui suit:

  .... Existing config SSLEngine on SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key  

Enfin, je tiens à souligner que si une organisation a mis en place un proxy de mise en cache. L’objective est probablement d’améliorer les performances de leurs utilisateurs. La meilleure façon de savoir avec certitude si une modification technique améliore la vitesse pour les utilisateurs finaux est de la mesurer. Les outils de développement Chrome incluent un moniteur réseau qui inclut des délais de chargement de page et de nombreux autres détails intéressants.