Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Comprimere il contenuto di una pagina web.

Una delle cose che spesso si dimentica quando si progetta un'applicazione web è che esistono ancora molti utenti che navigano con modem tradizionali e quindi la dimensione della pagina impatta molto sulle prestazioni. Con poche righe di codice è possibile implementare un handler che comprime la pagina con gzip o deflate in caso che il browser dell'utente supporti questo formato. L'handler è primitivo e mostra in generale come sia possibile effettuare una compressione semplicemente aggiungendo un filtro alla response.

 

namespace MyWebHandlers { public class CompressorModule : IHttpModule { #region IHttpModule Members public void Dispose() { } public void Init(HttpApplication context) { context.PreRequestHandlerExecute += PreRequestHandlerExecute; } private Boolean RequestCanBeZipped(String page) { return page.EndsWith(".aspx"); } private void PreRequestHandlerExecute( object Sender, EventArgs e) { if (RequestCanBeZipped(HttpContext.Current.Request.FilePath)) CompressRequest(); } private void CompressRequest() { if (HttpContext.Current.Request.Headers["Accept-encoding"] != null && HttpContext.Current.Request.Headers["Accept-encoding"].Contains("gzip")) { GZipStream gzip = new GZipStream(HttpContext.Current.Response.Filter, CompressionMode.Compress, true); HttpContext.Current.Response.Filter = gzip; HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip"); } else if (HttpContext.Current.Request.Headers["Accept-encoding"] != null && HttpContext.Current.Request.Headers["Accept-encoding"].Contains("deflate")) { DeflateStream defl = new DeflateStream(HttpContext.Current.Response.Filter, CompressionMode.Compress, true); HttpContext.Current.Response.Filter = defl; HttpContext.Current.Response.AppendHeader("Content-encoding", "deflate"); } } #endregion } }

Print | posted on lunedì 5 marzo 2007 20:39 |

Feedback

Gravatar

# re: Comprimere il contenuto di una pagina web.

Avevo scritto anche io una cosa simile qualche anno fa (http://www.delphiedintorni.it/geoxml/contentgetnews/%7BF58624F8-D3A8-4580-9FCF-FD992B9E3485%7D.htm) quando costruivo ISAPI in Delphi, tuttavia, se non ricordo male, da IIS 5 in su lo fa in automatico proprio IIS (Apache da molto prima) e quindi sarebbe un doppio lavoro...
05/03/2007 21:03 | Alessandro Petrelli
Gravatar

# re: Comprimere il contenuto di una pagina web.

mmm, molti web server hanno un'impostazione per farlo in automatico, zero codice da scrivere. Non so IIS
05/03/2007 21:11 | Zio
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET