2015-10-27 36 views
7

gzip_proxied umożliwia dostęp do następujących opcji (niepełny):Jakie są opcje dla dyrektywy gzip_proxied? Dyrektywa

  • upłynął
    umożliwia kompresję jeżeli odpowiedź zawiera nagłówek „Wygasa” pole z wartością, która wyłącza buforowanie;
  • no-cache
    włącza kompresję, jeśli nagłówek odpowiedzi zawiera pole "Cache-Control" z parametrem "no-cache";
  • no-store
    włącza kompresję, jeśli nagłówek odpowiedzi zawiera pole "Cache-Control" z parametrem "no-store";
  • prywatne
    włącza kompresję, jeśli nagłówek odpowiedzi zawiera pole "Cache-Control" z parametrem "prywatny";
  • no_last_modified
    włącza kompresję, jeśli nagłówek odpowiedzi nie zawiera pola "Ostatnia modyfikacja";
  • no_etag
    umożliwia kompresję jeśli nagłówek odpowiedź nie obejmują „ETag” pole;
  • auth
    włącza kompresję, jeśli nagłówek żądania zawiera pole "Autoryzacja";

Nie widzę żadnego racjonalnego powodu, aby korzystać z większości tych opcji. Na przykład, dlaczego to, czy żądane proxy zawiera nagłówek Authorization, czy też Cache-Control: private, ma wpływ na to, czy chcę go zgadać czy nie?

Biorąc pod uwagę, że stare wersje Nginx strip ETags from responses when gzipping them, widzę przypadek użycia dla no_etag: jeśli nie masz Nginx skonfigurowany do generowania Etags dla swoich spakowane gzipem odpowiedzi, może wolisz, aby przejść na nieskompresowanego odpowiedzi z zamiast ETag, zamiast generować skompresowany bez ETag.

Nie mogę jednak wymyślić innych.

Jakie są zamierzone przypadki użycia każdej z tych opcji?

Odpowiedz

7

Z admin guide: (Kopalnia nacisk)

Dyrektywa ma szereg parametrów określających, które rodzaje przybliżeniu z żądania nginx powinien kompresji. Na przykład: rozsądne jest kompresowanie odpowiedzi tylko do żądań, które nie będą buforowane na serwerze proxy. W tym celu dyrektywa gzip_proxied ma parametry, które nakazują NGINX sprawdzenie pola nagłówka Cache-Control w odpowiedzi i skompresowanie odpowiedzi, jeśli wartość nie jest typu cache, no-store lub private. Ponadto należy uwzględnić parametr wygasłej ważności, aby sprawdzić wartość pola nagłówka Expires.Parametry te są ustawione w następującym przykładzie, wraz z parametrem auth, który sprawdza obecność pola nagłówka Authorization (autoryzowana odpowiedź jest specyficzna dla użytkownika końcowego i zwykle nie jest buforowana)

Ja bym zgadzają się, że nie kompresowanie bufora odpowiedzi jest uzasadnione. Należy wziąć pod uwagę, że podstawową oszczędnością pamięci podręcznej na serwerze proxy jest zwiększenie wydajności (czasu odpowiedzi) oraz skrócenie czasu i przepustowości, jaką serwer proxy wydaje na żądanie zasobu wyjściowego. Kompromis w celu uzyskania korzyści związanych z wydajnością to koszt przechowywania pamięci podręcznej. Oto niektóre przypadki użycia gdzie nie ściskające Cacheable odpowiedzi sensu:

  1. W normalnym ruchu internetowego z wielu stron, odpowiedzi niewyspecjalizowanych spersonalizowane (które stanowią większość Cacheable odpowiedzi) mają już zoptymalizowane za pomocą technik takich jak minimalizacja skryptów, optymalizacja rozmiaru obrazu, itp., w procesie budowania sieci. Chociaż te statyczne zasoby mogą się nieco zmniejszyć od kompresji, koszt procesora próbowania zgasić go mniejszym, prawdopodobnie nie jest wydajnym wykorzystaniem zasobów maszyny warstwy pośredniej. Ale dynamicznie generowane strony, obsługiwane przez zalogowanych użytkowników, zawierające mnóstwo treści generowanych przez aplikacje, prawdopodobnie skorzystałyby z kompresji (i zazwyczaj nie byłyby buforowane).

  2. konfigurowania serwera proxy przed kosztowną upstream usługi, ale jesteś reakcje służące do innego pełnomocnika, który będzie odpowiedzialny za kompresję dla każdego agenta użytkownika. Na przykład, jeśli masz CDN, który wysyła wiele żądań do tego samego kosztownego zasobu wyjściowego (z oddzielnych lokalizacji geograficznych), a chcesz się upewnić, że możesz ponownie użyć kosztownej odpowiedzi. Jeśli CDN buforuje nieskompresowane wersje (w celu obsługi zarówno skompresowanych, jak i nieskompresowanych agentów użytkownika), możesz kompresować swoje proxy tylko po to, aby je ponownie zdekompresować w CDN, co jest po prostu marnowaniem sprzętu i energii elektrycznej po obu stronach, w celu zmniejszenia przepustowości część o największej przepustowości łańcucha. (Kompresja gzip Response jest najbardziej korzystna na ostatniej mili, aby uzyskać dane odpowiedzi na telefonie użytkownika, który spadł do jednej kropki sygnału po wejściu do metra.)

  3. W przypadku sporej jednostki odpowiedzi żądania mogą przychodzić (od różnych agentów użytkownika, ale często przez dalszych pośredników CDN) dla zakresów bajtowych zasobu, do agentów użytkownika, które nie obsługują kompresji. CDN prawdopodobnie będzie obsługiwał żądania bajtów z własnej pamięci podręcznej, pod warunkiem, że ma nieskompresowaną wersję już w pamięci podręcznej.

+1

"* Koszt procesora próbowania zgasić go mniejszym jest prawdopodobnie niewystarczającym wykorzystaniem zasobów maszyny warstwy pośredniej *" - ale nie mówimy o gzipowaniu w warstwie proxy, prawda? Mówimy o gzipowaniu na backend Nginx, za warstwą proxy, która przekazała żądanie do tego backendu Nginx; warstwa proxy nie musi kompresować ani dekompresować samej odpowiedzi. (Nie ma to wpływu na ogólną siłę twojego punktu, wystarczy po prostu naciąganie). –

+0

Punkt 1 (o gzipingu często nie jest wart zachowanych zasobów pamięci podręcznej, ponieważ zasoby pamięci podręcznej są często już zminimalizowane, a gzipowanie zminimalizowanych zasobów jest stratą czasu) jest bardzo mnie. Zasadniczo wydaje się to rozsądne, ale myślę, że w praktyce jest to nieprawda; ludzie, którzy [mierzyli efekt gzipowania minizowanej treści w innym miejscu na Stack Overflow] (http://stackoverflow.com/questions/807119/gzip-versus-minify) stwierdzili, że gzipowanie znacząco zmniejsza rozmiar pliku, nawet gdy zawartość jest gzipped jest już zminimalizowany. –

+0

Natomiast punkty 2 i 3 są znacznie bardziej atrakcyjne! Jeśli mogę podać tl; dr: proxy potrzebują zazwyczaj zdekompresowanej wersji zawartości, którą przechowują, albo do obsługi agentów użytkownika, które nie obsługują gzip, ani do obsługi żądań o zakresie bajtów. Więc jeśli buforują to, proxy muszą rozpakować odpowiedź gzipowaną, kosztując czas procesora.Jedyną korzyścią, jaką otrzymasz w zamian, jest zmniejszenie wykorzystania przepustowości między serwerem proxy a zapleczem, ale w pewnych okolicznościach (takich jak proxy i zaplecze w tej samej sieci lokalnej) przepustowość proxy do backendu może być praktycznie nieograniczona. –