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: Portal.office.com avec le compatibility View d’Internet Explorer 11 par Blog Technique de Romelard Fabrice le il y a 21 heures et 34 minutes

- Office 365: Comment utiliser la DLL Microsoft.SharePoint.Client.UserProfiles.dll dans son code PowerShell par Blog Technique de Romelard Fabrice le 09-23-2016, 09:15

- Office 365: Comment obtenir des informations des Users Profiles du tenant via PowerShell par Blog Technique de Romelard Fabrice le 09-22-2016, 17:58

- Event: La saison des conférence reprend, comme les champignons par Blog Technique de Romelard Fabrice le 09-21-2016, 10:05

- Microsoft Hololens par Le Blog (Vert) d'Arnaud JUND le 09-21-2016, 07:55

- SharePoint, édition multi fenêtres d'un élément de liste par Le Blog (Vert) d'Arnaud JUND le 09-19-2016, 13:10

- Ouvrir avec l’explorateur vos bibliothèques #SharePoint et #OneDrive… par Le blog de Patrick [MVP Office 365] le 09-10-2016, 17:47

- Contenu Festival #SharePoint et #Office 365 de mai 2016 à Paris #SPSParis par Le blog de Patrick [MVP Office 365] le 09-10-2016, 16:44

- Changements important pour Microsoft Store Services SDK par Blog de Jérémy Jeanson le 08-16-2016, 12:38

- Office 365: Le ContentTypeHub et les Content Types Orphelins par Blog Technique de Romelard Fabrice le 08-12-2016, 16:59