IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

GZip de toutes les pages


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut GZip de toutes les pages
    Bonjour,

    Je cherche à GZipper toutes les pages de mon application. En regardant un peu sur google, je trouve beaucoup d'exemple ou on indique qu'il suffit simplement d'ajouter le code suivant dans un page_load :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Response.Filter = New GZipStream(Response.Filter, CompressionMode.Compress)
            Response.AddHeader("Content-Encoding", "gzip")
    Je me pose donc 2 questions :
    - mon appli comporte plusieurs centaines de fichiers, donc je suis pas très chaud à l'idée d'ajouter ce code dans le page_load de chacun. Est-ce que j'ai moyen de le placer dans le page_load d'un contrôle utilisateur qui est appelé dans chacun des fichiers de l'appli ?
    - est-ce que cela fonctionne sans activer en plus les fonctions GZip de IIS ? (en gros, est-ce que la bibliothèque GZip du framework 2.0 est indépendante de la config de IIS ?)

    Merci !

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Dans ton Global.asax, tu peux utiliser ceci. L'avantage est d'écrire ce code qu'une seule fois mais aussi de pouvoir le désactiver facilement.
    Enfin, selon si le deflate ou gzip est supporté alors la compression se fait, sinon non.
    Autre chose, tu peux toujours développer un HttpModule pour gérer ce genre de chose, ou un HttpHandler pour les optimisations spécifiques à un type de requête (exemple : pour les images => compréssion si .bmp, mise en cache, etc...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    protectedvoid Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
    HttpApplication app = sender as HttpApplication;
    string acceptEncoding = app.Request.Headers["Accept-Encoding"];
    Stream prevUncompressedStream = app.Response.Filter;
     
    if (!(app.Context.CurrentHandler is Page) || app.Request["HTTP_X_MICROSOFTAJAX"] != null)
     return;
    if (acceptEncoding == null || acceptEncoding.Length == 0)
     return;
     
    acceptEncoding = acceptEncoding.ToLower();
    if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
    {
     // defalte
     app.Response.Filter = new DeflateStream(prevUncompressedStream,
     CompressionMode.Compress);
     app.Response.AppendHeader("Content-Encoding", "deflate");
    }
    elseif (acceptEncoding.Contains("gzip"))
    {
     // gzip
     app.Response.Filter = new GZipStream(prevUncompressedStream,
     CompressionMode.Compress);
     app.Response.AppendHeader("Content-Encoding", "gzip");
    }
    }
    En espérant t'avoir aidé.

  3. #3
    Membre éclairé Avatar de loulouklm
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 99
    Par défaut
    Pourquoi ne pas utiliser les Masters Pages ?

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Pourquoi ne pas utiliser les Masters Pages ?
    C'est une idée. Seulement, un projet Web peut contenir aussi beaucoup de Masters Pages et le problème revient au même.

    De plus avec cette méthode tu as accès à la requête, et donc au header, etc.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    Merci pour vos réponses !

    @Nicolas Esprit : ça m'aide beaucoup, ça semble être exactement ce que je cherche ! Est-ce que j'ai moyen de voir si la compression se fait ou non ? Je suis sur un IIS5, je crois que j'ai l'HTTP Compression d'activée, mais je voudrais être bien sûr que c'est suffisant pour que le GZip se passe bien côté .NET.

    @loulouklm : tu as raison, ça aurait été plus simple si mon appli utilisait des master pages, malheureusement, l'appli a été en partie développée il y a quelques temps sur du Framework 1.1, donc pas de Master Pages. On s'est débrouillé à l'époque en incluant tous les éléments redondant (menu, header, etc) dans des contrôles utilisateurs.

  6. #6
    Membre éclairé Avatar de loulouklm
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 99
    Par défaut
    Autre possibilité, les HttpModules ce qui revient au même que la méthode exposée par Nicolas

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/03/2006, 21h41
  2. La date sur toutes les pages
    Par philippef dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 07/02/2006, 17h44
  3. [W3C] rendre toutes les pages visibles
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/01/2005, 19h07
  4. [CR.NET] affichage de toute les pages de l'état
    Par HULK dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 19/01/2005, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo