2010-08-04 21 views
2

Je suis Tring à mettre en œuvre ce que Steve Souders discute http://www.stevesouders.com/blog/2010/07/12/velocity-forcing-gzip-compression/ de forcer la compression gzipJe tente de forcer la compression gzip sur une page à l'aide GZipStream mais le navigateur dit que je suis en utilisant la compression non pris en charge

J'ai un module qui est en cours d'exécution ceci:

void context_PreSendRequestHeaders(object sender, EventArgs e) 
{ 
    var app = sender as HttpApplication; 

    var request = app.Request; 
    var response = app.Response; 

    if (CompressionUtils.GzipSupported(request) || CompressionUtils.GzipNotSupportedExplicitly(request)) 
    { 
     return; 
    } 

    if (CompressionUtils.GzipSupportedExplicitly(request)) 
    { 
     response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 
     response.AddHeader(HttpHeaderKey.ContentEncoding, "gzip"); 
     return; 
    } 

    response.Write("<iframe style=\"display:none;\" src=\"/CompressedPage.aspx\"></iframe>"); 
} 

CompressionUtils.GzipSupported vérifie simplement l'en-tête « accepte » codant pour tout CompressionUtils.GzipSupportedExplicitly et CompressionUtils.GzipNotSupportedExplicitly pour vérifier le cookie dire si le navigateur peut vraiment lire gzip

Mais quand je charge une page dans Firefox Je reçois cette erreur:

Content Encoding Error

The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

et Fiddler il montre que l'en-tête codant pour le contenu a été ajouté, mais le contenu n'a pas été compressé

Répondre

1

donc il se trouve que je liais juste trop tard, lié à PostMapRequestHandler au lieu de PreSendRequestHeaders. Fonctionne bien maintenant.