2015-08-23 23 views
14

Mam włączoną kompresję gzip w IIS 8.0 podążając za url Enabling Gzip in IIS on Windows 8 Dzwonię zewnętrzne usługi odpoczynku z mojej aplikacji za pośrednictwem wywołania ajax jquery i kodu C#, obecnie moja zewnętrzna usługa sieciowa nie jest skompresowana gzip. Jeśli poproszę mojego partnera serwisowego o skompresowanie odpowiedzi, czy muszę napisać jakąkolwiek logikę dekompresyjną w moim kodzie po stronie jquery, a strona C# lub przeglądarka automatycznie rozpakuje odpowiedź dla mnie?Czy GZIP jest automatycznie dekompresowany przez przeglądarkę?

Odpowiedz

14

Wszystkie współczesne przeglądarki obsługują kodowane gzip odpowiedzi. W rzeczywistości, jeśli spojrzysz na ich żądania, będą one miały nagłówek, który mówi coś w stylu Accept-Encoding: gzip, co jest sposobem na przekazanie serwerowi, że mogą obsługiwać spakowane przez gzip odpowiedzi.

Ważną częścią jest to, że serwer może zwrócić zarówno gzip, jak i nieskompresowane odpowiedzi w zależności od istnienia i wartości tego nagłówka. Jeśli klient nie wyśle ​​nagłówka Accept-Encoding, nie należy go kompresować. Jeśli klient go wyśle, możesz opcjonalnie zakodować odpowiedź za pomocą programu gzip. Nie cała zawartość musi być skompresowana, ponieważ może być już skompresowana i marnujesz cykle procesora. Obrazy JPEG są zwykle dobrym tego przykładem. Najprawdopodobniej IIS podejmuje również inteligentną decyzję i kompresuje tylko to, co jest konieczne, gdy jest to konieczne.

Możesz sprawdzić, czy IIS robi to, co powinien, patrząc na nagłówki odpowiedzi wracające z serwera i szukając nagłówka Content-Encoding: gzip. To mówi klientowi lub przeglądarce, że treść jest zakodowana przy użyciu kompresji gzip i powinna odpowiednio rozpakować.

Wszystkie żądania oparte na przeglądarce (np. AJAX/jQuery, zwykłe żądania) zostaną automatycznie zdekompresowane bez dodatkowego wysiłku ze strony użytkownika. Przeglądarka jest klientem odpowiedzialnym za określenie, czy może obsłużyć gzip i doda nagłówek Accept-Encoding, jeśli tak się stanie. Twój kod JavaScript otrzyma nieskompresowaną wersję w twoim module obsługi odpowiedzi.

TL; DR: Włączenie go jest zazwyczaj dobrym pomysłem i nie trzeba wykonywać dodatkowej pracy.

+0

Dziękuję za odpowiedź. Wspaniała odpowiedź. To mi bardzo pomaga :) – user5075511

1

Jeśli kompresja gzip jest włączona na serwerze WWW, czyli nie w logice aplikacji, wówczas przeglądarka rozpakuje się automatycznie.

W rzeczywistości, jeśli przeglądarka nie obsługuje kompresji, serwer WWW wyśle ​​dane nieskompresowane (te informacje znajdują się w nagłówkach HTTP żądania/odpowiedzi wymienianych między przeglądarką a serwerem WWW). Należy pamiętać, że kompresja jest nieefektywna w przypadku plików JPEG i innych już skompresowanych formatów.

Powiązane problemy