2016-07-07 4 views
7

En Firebug l'en-tête de requête a l'entrée suivante:
Accept-Encoding: gzip, dégonflerapplication IIS manquant Content-Encoding - gzip en-tête de réponse

Mais il n'y a pas:
Content-Encoding: gzip
Dans l'en-tête de réponse. Peu importe ce que j'ai essayé, après un certain nombre de réponses sur SO et d'autres sites, rien ne semble fonctionner! Ni les fichiers statiques ni les fichiers dynamiques ne sont compressés, ou du moins s'il n'y a pas de codage de contenu - la valeur gzip revient dans l'en-tête de la réponse.

Voici un exemple de mes paramètres web.config:

<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" /> 
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="150" staticCompressionIgnoreHitFrequency="true"> 
    <remove name="gzip" /> 
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="8" dynamicCompressionLevel="8" /> 
</httpCompression> 

Je l'ai ignoré la fréquence de coup
staticCompressionIgnoreHitFrequency="true "

J'ai confirmé que IIS est en fait la compression des fichiers que je peut voir dans:
C: \ inetpub \ temp \ IIS fichiers compressés temporaires

Comme sp ecified ici: set up gzip in IIS 8 windows 8
J'ai assuré que la compression statique et dynamique est activée dans les fonctionnalités de Windows> Internet Information Services> WWW Services> Performance Caractéristiques

J'ai aussi essayé l'approche de ce type:
IIS 7.5 Compression creates compressed file but returns the non-compressed one


Edit 1:
IIS version est 10, mais j'ai essayé sur IIS 8.5


Edit 2:
J'ai maintenant essayé différents fichiers de configuration trouvés sur ce lien: https://github.com/h5bp/server-configs-iis/ qui fournit ce qui ressemble à certains fichiers web.config « meilleures pratiques ».
ne résoud pas


Edit 3:
Basé sur @ l'entrée de Nkosi j'ai créé une toute nouvelle application Asp.net MVC et configuré à l'aide de toutes ces options que j'ai essayé. est ici l'en-tête cru que je suis arrivé de Fiddler:

HTTP/1.1 200 OK 
Transfer-Encoding: chunked 
Content-Type: text/javascript; charset=UTF-8 
Expires: Wed, 20 Jul 2016 18:22:47 GMT 
Last-Modified: Wed, 20 Jul 2016 18:22:47 GMT 
Server: Microsoft-HTTPAPI/2.0 
Date: Wed, 20 Jul 2016 18:22:47 GMT 

Comme vous pouvez le voir, pas Content-Encoding: gzip
Non résolu


Edit 4:
I J'ai essayé cette approche d'ajouter du code à l'événement BeginRequest dans la section Global.asax: https://stackoverflow.com/a/27185575/392591
ne résoud pas


Edit 5:
Je viens d'essayer l'activation du suivi en fonction de cette réponse sur le SO: https://stackoverflow.com/a/33182525/392591
Aucun échec, mais j'ai remarqué tout au fond du fichier de trace il y a une section appelée GENERAL_RESPONSE_HEADERS et voici ce qu'elle fournit:

Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Server: Microsoft-IIS/10.0 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-Powered-By: My Little Pony 
X-UA-Compatible: IE=Edge,chrome=1 

Et c'est pour chaque fichier de type statique.
Cependant, je viens de trouver ce qui suit dans le fichier de trace:

8. STATIC_COMPRESSION_START 08:04:03.552 
9. STATIC_COMPRESSION_NOT_SUCCESS Reason="NOT_FREQUENTLY_HIT" 08:04:03.552 
10. STATIC_COMPRESSION_END 08:04:03.552 

Compression Non Succès pour la raison de ne pas ... Hit fréquemment Odd parce que j'ai certainement l'option Ignorer Hit option de fréquence définie sur true!

Je suis allé dans Gestionnaire des services Internet et sur le serveur, je mis la Ignorer Hit fréquence true (c.-à-applicationHost.config) et il a changé la sortie de fichier de trace à ce qui suit:

8. STATIC_COMPRESSION_START 08:19:17.489 
9. STATIC_COMPRESSION_SUCCESS 08:19:17.489 
10. STATIC_COMPRESSION_END 08:19:17.489 

Je suis retourné et l'a éteint dans le fichier applicationHost.config et il est revenu à une Compression Statique Pas de Succès, donc cela fait définitivement une différence. Cependant, quand je regarde FireBug, c'est toujours la livraison du fichier non compressé et pas de l'en-tête de réponse GZIP Content Encoding. Un autre bit intéressant que j'ai remarqué dans la trace de demande ayant échoué est les deux dernières entités GENERAL_FLUSH_RESPONSE_END et GENERAL_REQUEST_END qui montrent que mon fichier Bootstrap.css a envoyé 17903 octets, environ 18 ko, correspondant à la version compressée du fichier que je vois dans mon dossier IIS Temporary Compressed Files. Donc, le fichier est physiquement compressé et selon les traces de la demande échouée, il envoie le bon contenu ... mais le navigateur prend le fichier de 117 Ko à la place?
Non résolu


+0

J'utilise IIS10 et mon web.config a '' seulement. Quand je fais des tests de requêtes depuis un navigateur (Firefox, IE11, Edge, Google Chrome) vers une simple application MVC. Toutes les requêtes ont 'Accept-Encoding: gzip, deflate' et les réponses renvoient' Content-Encoding: gzip' – Nkosi

+0

Voir [this] (http://stackoverflow.com/questions/702124/enable-iis7-gzip). Peut-être que vous devez activer la fonctionnalité gzip sur le serveur. –

+0

@LucasSegers - La fonctionnalité est définitivement activée. – Jacques

Répondre

1

J'utilise IIS10 et mon web.config a

<system.webServer> 
    <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" /> 
    <!-- other config removed for brevity --> 
</system.webServer> 

Quand je fais des demandes de test à partir d'un navigateur (Firefox, IE11, Edge, Google Chrome) à un application MVC simple.

Les demandes ont toutes Accept-Encoding: gzip, deflate et les réponses renvoient Content-Encoding:gzip.

J'ai même testé avec Fiddler.La demande manuellement composer

GET http://localhost/MyWebApplication HTTP/1.1 
User-Agent: Fiddler 
Host: localhost 
Accept-Encoding: gzip, deflate 

et obtenir le même résultat

HTTP/1.1 200 OK 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Server: Microsoft-IIS/10.0 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Mon, 18 Jul 2016 15:26:06 GMT 
Content-Length: 3826 

... 

Css, Js et tous les autres fichiers à base de texte sont en cours compressés.

Vous devrez peut-être vérifier votre configuration pour vous assurer que la compression est correctement configurée dans IIS et votre fichier web.config.

MISE À JOUR:

J'ai remarqué que les images n'étaient pas compressés

Demande

GET http://localhost/MyWebApplication/Images/Logo_small.png HTTP/1.1 
User-Agent: Fiddler 
Host: localhost 
Accept-Encoding: gzip, deflate 

Réponse

HTTP/1.1 200 OK 
Cache-Control: max-age=604800 
Content-Type: image/png 
Last-Modified: Fri, 27 Nov 2015 03:15:22 GMT 
Accept-Ranges: bytes 
ETag: "c9d1fdd9c128d11:0" 
Server: Microsoft-IIS/10.0 
X-Powered-By: ASP.NET 
Date: Mon, 18 Jul 2016 15:33:02 GMT 
Content-Length: 2970 

... 

Après un google-fu a découvert que les images sont généralement déjà compressés, donc gzip n'a pas été appliqué.

COMPLET system.webServer de web.config

<system.webServer> 
    <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" /> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
     <clear /> 
     <error statusCode="404" responseMode="ExecuteURL" path="/NotFound" /> 
    </httpErrors> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <staticContent> 
     <remove fileExtension=".woff" /> 
     <remove fileExtension=".woff2" /> 
     <mimeMap fileExtension=".woff" mimeType="application/font-woff" /> 
     <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" /> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 
    </system.webServer> 
+0

J'ai mis à jour ma question, voir Édition 3. Quel code avez-vous supprimé de votre exemple, tout ce qui pourrait changer mes résultats? – Jacques

+0

@Jacques, le reste de la configuration est 'httpErrors, handler, staticContent'. Je l'ai gardé minimal. Je vais l'inclure dans la mise à jour. – Nkosi

+0

D'accord, je ne pense pas que cela aurait un impact sur ce problème. J'ai ajouté une autre mise à jour avec une autre solution que je viens d'essayer, toujours pas de joie. – Jacques

0

J'ai eu un problème similaire avec un pré configuré IIS.

Après de nombreuses tentatives, nous avons compris que le problème était un bug dans l'installation de GZIP, le problème a été résolu simplement en réinstallant la fonctionnalité dans le panneau de contrôle.