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: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06

- [TFS] Supprimer en masse les dépendances à SQL Enterprise ou Developer avant de procéder à une migration par Blog de Jérémy Jeanson le 02-20-2017, 20:30

- Office 365: Attention au volume utilisé par les fichiers de Thèmes de SharePoint Online par Blog Technique de Romelard Fabrice le 02-07-2017, 18:19

- [SCVMM] Supprimer une machine bloquée par Blog de Jérémy Jeanson le 01-31-2017, 21:22

- Microsoft .Net Challenge 2017 par Le Blog (Vert) d'Arnaud JUND le 01-30-2017, 15:25

- Office 365: Utiliser le bouton Export to Excel depuis un teamsite SharePoint Online et avec le client Office 2007 par Blog Technique de Romelard Fabrice le 01-27-2017, 18:58

- Office 365: Forcer la réindexation des données dans une liste SharePoint Online par Blog Technique de Romelard Fabrice le 01-25-2017, 15:57

- Helper MVC pour panel Boostrap utilisable dans un block using par Blog de Jérémy Jeanson le 01-24-2017, 07:28

- Office 365: La gestion des Attachments dans les listes riches de SharePoint Online par Blog Technique de Romelard Fabrice le 01-10-2017, 17:56