Quelqu'un sait-il comment activer la compression gzip dans MVC 3? J'utilise IIS7.
Google Chrome Résultat de l'audit:
- Activer la compression gzip (4)
- Compresser les ressources suivantes avec gzip pourrait réduire la taille de leur transfert d'environ deux tiers (~ 92,23 Ko):
- / mydomain/pourrait économiser ~ 1,53 Ko
- jquery-1.4.4.min.js pourrait économiser ~ 51,35 Ko
- Cufon.js pourrait économiser ~ 11.89KB
- Futura.js pourrait économiser ~ 27.46Ko
Vous pouvez configurer la compression via votre web.config
fichier comme suit:
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
Vous trouverez la documentation de cet élément de configuration à l’adresse iis.net/ConfigReference . C'est l'équivalent de:
Remarque: (comme indiqué dans les commentaires) Vous devez vous assurer que la compression dynamique HTTP est installée, sinon, définissez doDynamicCompression="true"
n'aura aucun effet. Le moyen le plus rapide de le faire est:
optionalfeatures
(c'est le moyen le plus rapide d'accéder à la fenêtre "Activer ou désactiver des fonctionnalités Windows")Vous pouvez le faire dans le code si vous préférez le faire. Je ferais un contrôleur de base dont chaque contrôle hériterait et le décorerais avec cet attribut ci-dessous.
public class CompressAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(encodingsAccepted)) return;
encodingsAccepted = encodingsAccepted.ToLowerInvariant();
var response = filterContext.HttpContext.Response;
if (encodingsAccepted.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
else if (encodingsAccepted.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
}
}
La compression est activée/désactivée au niveau du serveur. Voir IIS de compression dans la console de gestion IIS).
Voici les instructions pour IIS du site Microsoft.