Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

ASP.NET MVC : Un filtre pour contrôler la compression de la réponse

Une des grandes forces de ASP.NET MVC est son extensibilité. Les action filters sont un de ces points d'extension. Kazi Manzur Rashid a publié un article sur son blog expliquant comment écrire deux ActionFilters qui contrôlent le cache et la compression de la réponse.

Le cache est maintenant supporté d'origine par ASP.NET MVC, mais le filtre pour contôler la compression peut être utile. Le voici :

public class CompressFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        string acceptEncoding = request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(acceptEncoding)) return;
        acceptEncoding = acceptEncoding.ToUpperInvariant();
        HttpResponseBase response = filterContext.HttpContext.Response;
        if (acceptEncoding.Contains("GZIP"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (acceptEncoding.Contains("DEFLATE"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
}

Il suffit ensuite de décorer une action ou un controlleur avec cet attribut, et la réponse sera automatiquement compressée si le client supporte la compression (tous les navigateurs le supportent de nos jours).

Publié mercredi 18 mars 2009 14:59 par RaptorXP
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Office 365] Administrer SharePoint Online en Powershell par Blog Technique de Romelard Fabrice le 08-28-2015, 16:49

- Mes features favorite d’Hyper-V sur Windows 10 par Blog de Jérémy Jeanson le 08-26-2015, 14:03

- Simplification du processus de déploiement de NanoServer par Blog de Jérémy Jeanson le 08-24-2015, 15:54

- Evènements en français lors des prochains mois… par Le blog de Patrick [MVP Office 365] le 08-24-2015, 15:27

- [Hyper-V] Live migration impossible entre hôtes Intel et AMD par Blog de Jérémy Jeanson le 08-21-2015, 19:19

- SP2013 VM install : pénible erreur de Microsoft Setup Bootstrapper par The Mit's Blog le 08-20-2015, 11:43

- Premiers pas avec AkkaDotNet par Fathi Bellahcene le 08-18-2015, 10:36

- La feuille de route NON-OFFICIELLE d’Office 365 – De MS Ignite 2015 à MS Ignite 2016 par Le blog de Patrick [MVP Office 365] le 07-23-2015, 14:04

- 24 heures de conférence en ligne #Collab365 ! par Le blog de Patrick [MVP Office 365] le 07-21-2015, 18:12

- « Festival Clin d‘Œil » à Reims par Blog de Jérémy Jeanson le 07-03-2015, 14:43