17 messaggi dal 06 febbraio 2013
Ciao a tutti,
sto cercando da qualche giorno :-( di applicare la compressione gzip sulle pagine web del sito che sto creando ma senza successo.
La compressione la voglio applicare lato sito perché non ho accesso a impostazioni lato IIS.

Ho provato con una libreria e creando un filtro ad hoc ma non funziona, per il momento il test è tutto in locale sul mio pc.

HO creato il filtro e poi inserito attributo in controller.

Avete suggerimenti? perché non funziona?
sotto codice del filtro creato

Grazie
A

public class CompressAttribute : ActionFilterAttribute
    {
        public override void OnResultExecuting(ResultExecutingContext 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);
            }
        }
    }
10.957 messaggi dal 09 febbraio 2002
Contributi
Ciao,
in che senso "non funziona"? Hai provato a mettere un breakpoint nel metodo OnResultExecuting per vedere se l'esecuzione passa di lì?


non ho accesso a impostazioni lato IIS.

In realtà ce l'hai, a meno che il provider non ti abbia espressamente precluso questa possibilità.
Il file di configurazione di IIS è il web.config. Il nodo <system.webServer> serve appunto a controllare le impostazioni di IIS. Puoi fare tutto quello che faresti dalla console, quindi non è necessario avere accesso.

Per esempio, se l'hosting provider ha attivato la compressione dei contenuti dinamici a livello di IIS, puoi scrivere questo nel web.config per sfruttarla:
<system.webServer>
  <urlCompression doDynamicCompression="true" />
</system.webServer>


Ovviamente però in questo modo non hai lo stesso controllo granulare che hai con il filtro MVC.

ciao,
Moreno
Modificato da BrightSoul il 08 ottobre 2018 22.23 -

Enjoy learning and just keep making
17 messaggi dal 06 febbraio 2013
Ciao Moreno,
grazie per la risposta.

Ho debuggato ed entra nella condizione, quindi in teoria la compressione è stata applicata ma se controllo da browser vedo che non è stata applicata la compressione contollando le dimensioni e controllando header della response.

Ho poi chiesto ad aruba se loro potevano applicare la compressione, mi hanno risposto che viene applicata solo agli elementi statici, alle pagine dinamiche no.


Grazie
A

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.