Ich habe eine Website in asp.NET 4 (C#).
Ich versuche, eine Möglichkeit zu finden, die Bandbreite für meine Website besser zu optimieren.
Ich habe viele Artikel gelesen, die besagen, dass DEFLATE schneller und kleiner als GZIP ist, weil GZIP (basierend auf DEFLATE) einige zusätzliche Daten hinzufügt.
Wenn Sie die Header von bing.com und google.com überprüfen, scheinen beide GZIP-codierte Daten zu senden.
Angenommen, was ich lese, vermisse ich in diesem Fall den Vorteil von GZIP. Ich vermute also, dass es einen guten Grund geben sollte, GZIP DEFLATE vorzuziehen.
Meine Fragen:
- Bietet GZIP Vorteile gegenüber DEFLATE, die mir nicht bekannt sind?
- Irgendeine Ahnung, warum große Suchmaschinen GZIP verwenden?
Hier ist der Code, den ich verwende, um DEFLATE (von Global.asax) zu senden:
protected void 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.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
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");
}
else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
Siehe stackoverflow.com/questions/388595/…
– Sebastian Paaske Torholm
30. August 2011 um 13:19 Uhr
Danke Paul für deine Überarbeitung.
– GibboK
30. August 2011 um 13:21 Uhr
Alle Antworten sind falsch / unvollständig, außer dieser: stackoverflow.com/a/9856879/632951
– Schrittmacher
4. Juli 2012 um 2:18 Uhr