2015-08-23 3 views
14

Ich habe Gzip-Komprimierung in IIS 8.0 aktiviert, indem ich die URL Enabling Gzip in IIS on Windows 8 Ich rufe externe Restdienste von meiner Anwendung über JQuery Ajax Anruf und C# -Code, derzeit ist meine externe Webdienst nicht Gzip komprimiert. Wenn ich meinen Servicepartner frage, um ihre Antwort zu gzip, muss ich irgendeine Dekompressionslogik in meinem Code auf jquery Seite schreiben und C# Seite oder Browser dekomprimieren automatisch die Antwort für mich?Wird GZIP automatisch vom Browser dekomprimiert?

Antwort

14

Alle modernen Browser können eine gzip-kodierte Antwort verarbeiten. In der Tat, wenn Sie auf ihre Anforderungen schauen, werden sie eine Überschrift haben, die etwas in der Richtung von Accept-Encoding: gzip sagt, die ihre Art ist, dem Server zu sagen, dass sie mit gzipped Antworten umgehen können.

Der wichtige Teil ist, dass Ihr Server sowohl gzip als auch unkomprimierte Antworten abhängig von der Existenz und dem Wert dieses Headers zurückgeben kann. Wenn ein Client den Header Accept-Encoding nicht sendet, sollten Sie ihn nicht komprimieren. Wenn der Client es sendet, können Sie die Antwort optional mit gzip codieren. Nicht alle Inhalte müssen komprimiert werden, da sie möglicherweise bereits komprimiert sind und CPU-Zyklen verschwenden. JPEG-Bilder sind normalerweise ein gutes Beispiel dafür. Höchstwahrscheinlich trifft IIS auch hier eine intelligente Entscheidung und komprimiert bei Bedarf nur das Notwendige.

Sie können überprüfen, ob IIS das tut, was es sein sollte, indem Sie die Antwortheader ansehen, die von Ihrem Server zurückkommen und nach dem Header Content-Encoding: gzip suchen. Das teilt dem Client oder Browser mit, dass der Inhalt mithilfe der GZIP-Komprimierung codiert wird, und entpackt sie entsprechend.

Alle browserbasierten Anfragen (z. B. AJAX/jQuery, reguläre Anfragen) werden automatisch ohne zusätzlichen Aufwand von Ihnen dekomprimiert. Der Browser ist der Client, der dafür verantwortlich ist, festzustellen, ob er gzip verarbeiten kann, und fügt den Header Accept-Encoding hinzu, falls dies der Fall ist. Ihr JavaScript-Code erhält die unkomprimierte Version in Ihrem Antworthandler.

TL; DR: es auf dem Drehen ist in der Regel eine gute Idee, und Sie sollten nicht zusätzliche Arbeit tun müssen.

+0

Vielen Dank für Ihre Antwort. Wunderbare Antwort. Das hilft mir sehr :) – user5075511

1

Wenn die Gzip-Komprimierung auf dem Webserver aktiviert ist, das heißt, nicht in der Anwendungslogik, dann wird der Browser automatisch dekomprimieren.

In der Tat, wenn der Browser keine Komprimierung unterstützt, wird der Webserver die Daten unkomprimiert senden (diese Informationen sind in den HTTP-Headern Request/Response zwischen Browser und Webserver ausgetauscht). Beachten Sie jedoch, dass die Komprimierung bei JPEG und anderen bereits komprimierten Formaten nicht effektiv ist.