Używam odwrotnej pamięci podręcznej proxy nginx z włączonym gzip. Mam jednak problemy z żądaniami HTTP aplikacji Android do mojej usługi internetowej Rails JSON. Wygląda na to, że kiedy wyłączę bufor buforowania odwrotnego proxy, działa to dobrze, ponieważ nagłówek odpowiedzi przychodzi bez gzip. Dlatego myślę, że problem jest spowodowany przez gzip. Jaki jest najbardziej odpowiedni poziom kompresji gzip?
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css text/javascript application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss;
Przetestowałem to pod nginx 1.3.9 z dwoma plikami, i takie były wyniki dla różnych poziomów:
text/html
- phpinfo ():application/x-javascript
- jQuery 1.8.3 (nieskompresowany):Nie jestem pewien, czy jest to reprezentatywne, ale powinno to służyć jako przykład. Ponadto nie wziąłem pod uwagę użycia procesora, ale z tych wyników wydaje się, że idealny poziom kompresji jest pomiędzy
4
i6
.Dodatkowo, jeśli używasz
gzip_static
modułu, możesz chcieć wstępnie skompresować swoje pliki (w PHP):Pozwala to uzyskać najlepszą możliwą kompresję bez poświęcania procesora na każde żądanie.
źródło
Jeśli naprawdę możesz oszczędzić zasoby procesora, możesz użyć 9, ale dla większości witryn wystarczająca jest wartość 2, ponieważ gzip nie zmniejsza pliku znacznie po poziomie 1.
Edycja: Patrzyłem na Amazon CloudFront i wydaje się, że używa poziomu 6, prawdopodobnie dlatego, że ten poziom uruchamia dekompresję szybciej, co poprawia wydajność renderowania strony.
źródło
Jeśli masz dużą witrynę i nadal chcesz mieć pełny poziom kompresji (9), najlepszym pomysłem byłoby umieszczenie zawartości statycznej na Amazon S3 lub podobnych obiektowych usługach przechowywania i przesłanie skompresowanych plików.
Nadal będziesz chciał używać nginx do kompresji HTML, więc lepiej utrzymać tę wartość na normalnym poziomie, używam tam 5.
źródło
comp_level
w konfiguracji, więc nie mogę powiedzieć, na jakim poziomie jestem obecnie. Czy wiesz jakie są wartości domyślne? Źródło?