Pourquoi la compression gzip ASP.NET corrompt-elle le CSS ?
-
09-06-2019 - |
Question
J'ai une application de formulaires Web ASP.NET (3.5 SP1) sur laquelle je travaille et j'essaie d'activer gzip pour HTML et CSS qui arrivent.j'utilise cette mise en œuvre (et j'en ai essayé quelques autres qui se connectent à Application_BeginRequest), et cela semble corrompre le fichier CSS externe que les pages utilisent, mais par intermittence... tout à coup, tous les styles disparaîtront lors d'une actualisation de la page, resteront ainsi pendant un certain temps, puis recommencez soudainement à travailler.
IE7 et FF3 présentent ce comportement.Lors de l'affichage du CSS à l'aide de la barre d'outils du développeur Web, il renvoie du charabia.L'en-tête de contrôle de cache apparaît comme "privé", mais je n'en sais pas suffisamment pour savoir si c'est un facteur contributif ou non.
En outre, cela s'exécute sur le serveur de développement ASP.NET.Ce serait peut-être bien avec IIS, mais je développe sur XP et ce serait IIS5.
La solution
Est-ce que seuls les fichiers CSS sont corrompus ?Les fichiers JS (ou tout autre fichier texte statique) passent-ils correctement ?
Pouvez-vous également dupliquer le comportement si vous accédez directement au fichier CSS ?
J'ai uniquement activé la compression sur IIS du serveur Windows 2003 en utilisant cette approche :
- IIS → Sites Web → Propriétés → onglet Service, cochez les deux cases
- IIS → Extensions de service Web → Clic droit, Ajouter un nouveau
Name Http Compression Required Files %systemroot%\system32\inetsrv\gzip.dll
- IIS → Cliquez avec le bouton droit sur le nœud supérieur, Internet Information Services, cochez Activer la modification directe de la métabase
- Sauvegarder et modifier
%systemroot%\system32\inetsrv\MetaBase.xml
- Trouver
Location ="/LM/W3SVC/Filters/Compression/gzip"
- Ajouter
png
,css
,js
et toute autre extension de fichier statique àHcFileExtensions
- Ajouter
aspx
et toute autre extension exécutable deHcScriptFileExtensions
- Sauvegarder
- Ajouter
- Trouver
- Redémarrez IIS (exécutez
iisreset
)
Si vous disposez d'un serveur Windows 2003/2008 avec lequel jouer, vous pouvez essayer cette approche.
Autres conseils
Si vous comptez déployer sur IIS 6 ou IIS 7, utilisez simplement la compression IIS intégrée.Nous l'utilisons sur les sites de production pour compresser HTML, CSS et JavaScript sans erreur.Il met également en cache la version compressée sur le serveur, de sorte que la compression n'est effectuée qu'une seule fois.