2011-01-17 6 views
22

Znalazłem kilka tutoriali na temat włączania gzip, btu nic nie działa dla mnie, więc moje pytanie brzmi: jak włączyć gzip. Jestem na wspólnym serwerze Dreamhost, działa PHP w wersji 5.2 i Apache, z informacji php znalazłem tę linię, może to mogłoby pomóc?Jak włączyć gzip?

zlib 

ZLib Support enabled 
Stream Wrapper support compress.zlib:// 
Stream Filter support zlib.inflate, zlib.deflate 
Compiled Version 1.2.3.3 
Linked Version 1.2.3.3 

Directive Local Value Master Value 
zlib.output_compression Off Off 
zlib.output_compression_level -1 -1 
zlib.output_handler no value no value 

Mam również znaleźć ten wiersz

_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate 

Nie wiem, czy to ma coś wspólnego z nim. Ale to jest moje pierwsze pytanie, po drugie, mam dropboxa, hostowanie pliku javscript, i zastanawiam się, czy można zgrupować ten plik, To nie jest przesyłane w postaci skompresowanej, więc czy jest to jakiś sposób na zrobienie tego?

+0

Co chcesz gzip dla? Korzystanie z funkcji PHP gzip? Kompresowanie danych wyjściowych serwera WWW? Jeśli to drugie, zainstaluj 'mod_deflate' i spróbuj [serverfault.com] (http://serverfault.com), jeśli masz jakieś problemy/pytania. – netcoder

Odpowiedz

43

Czy próbowałeś z ob_gzhandler?

php manual

<?php 
ob_start("ob_gzhandler"); 
?> 
<html> 
<body> 
<p>This should be a compressed page.</p> 
</html> 
<body> 

wskazówka: czasami jest bardzo trudne do wykrycia, jeśli internetowej jest wysłać skompresowane lub nie, mogę używać wtyczki firebug Firefoksa, i przetestowany plik php bez kompresji i kompresji i porównać wielkości, w moim przypadku różnica wynosiła 1mb (bez kompresji) i skompresowano 56kb.

lub w .htaccess

<IfModule mod_deflate.c> 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css   application/x-javascript application/javascript 
</IfModule> 
+0

co do arkusza stylów i javascripts? Pomyślałem, że to będzie coś w stylu .htaccess. jednak spróbuję. – mcbeav

+0

O ile widzę, to nie daje mi żadnych wyników. – mcbeav

+0

... – magallanes

5

w oficjalnym wiki z Dreamhost umożliwiają one to przez modifying an htaccess:

<IfModule mod_gzip.c> 
    mod_gzip_on  Yes 
    mod_gzip_dechunk Yes 
    mod_gzip_item_include file  \.(html?|txt|css|js|php|pl|jpg|png|gif)$ 
    mod_gzip_item_include handler ^cgi-script$ 
    mod_gzip_item_include mime  ^text/.* 
    mod_gzip_item_include mime  ^application/x-javascript.* 
    mod_gzip_item_exclude mime  ^image/.* 
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</IfModule> 

To w zasadzie sprawdza, czy mod_czip.c znajduje i czy to skompresuje pliki, abyś mógł je szybciej wysłać do przeglądarki. To podobno przyśpiesza pobieranie razy 35-40%, a następnie rozmiar pliku powinien spaść do 55-65%.

Z szybkiego wyszukiwania w Google można wymyślić innego thread on Stackoverflow się w third party miejscu rozwiązania tego problemu.

+0

To jest bardzo stare. Z Apache 2 najlepiej używać 'mod_deflate.c'. – VSG24

+0

Dołączasz pliki takie jak 'jpg/png/gif', a następnie zabraniasz im używania mime' image /.* '. Naprawdę nie ma dla mnie sensu. – mgutt

2

## Przede wszystkim musisz dokonać zmian w ustawieniu WHM (serwer), aby włączyć Gzip. Po tym wprowadzeniu zmian w ustawieniu cPanel ##

  1. Dla ustawienia WHM => Łatwy Apache => Opcje < wyczerpująca lista tutaj enable - korekta zakładka>

  2. Dla cPanel ustawienie => Sofware/Usługi => Optymalizacja strony < tutaj opcję wybrać, co chcesz>

3

W Apache, włączanie kompresji wyjściowej jest dość proste. Dodaj poniższe linie do pliku .htaccess:

# compress text, html, javascript, css, xml: 
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html 
AddOutputFilterByType DEFLATE text/xml 
AddOutputFilterByType DEFLATE text/css 
AddOutputFilterByType DEFLATE application/xml 
AddOutputFilterByType DEFLATE application/xhtml+xml 
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/javascript 
AddOutputFilterByType DEFLATE application/x-javascript 

# Or, compress certain file types by extension: 
<files *.html> 
SetOutputFilter DEFLATE 
</files> 

Źródło: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

+0

http://www.giftofspeed.com/enable-gzip-compression/ – Kamlesh

1

Ściskanie można wykonać na dwa sposoby.

Apache rzeczywiście ma dwie opcje kompresji:

  • mod_deflate jest łatwiejszy w konfiguracji i jest standardem.
  • mod_gzip wydaje się bardziej wydajny: można wstępnie kompresować zawartość.

Deflate jest szybki i działa, więc go używam; użyj mod_gzip, jeśli pływa twoja łódź. W obu przypadkach Apache sprawdza, czy przeglądarka wysłała nagłówek "Accept-encoding" i zwróciła skompresowaną lub regularną wersję pliku. Jednak niektóre starsze przeglądarki mogą mieć problemy (więcej poniżej) i istnieją specjalne dyrektywy, które możesz dodać, aby to poprawić.

Jeśli nie możesz zmienić pliku .htaccess, możesz użyć PHP do zwrócenia skompresowanej treści. Daj HTML złożyć rozszerzenie .php i dodać ten kod do góry:

W PHP:

<?php if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) 
ob_start(“ob_gzhandler”); else ob_start(); ?> 

sprawdzamy inaczej „Akceptuj kodujący” nagłówek i zwracają gzipped wersję pliku (the wersja regularna). To prawie jak budowanie własnego serwera WWW (co za zabawa!). Ale naprawdę, spróbuj użyć Apache do skompresowania danych wyjściowych, jeśli możesz pomóc. Nie chcesz małpować z plikami.

referencyjny: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

0

Wszystko co musiałem zrobić, aby umożliwić kodowanie na poziomie Apache jest

zlib.output_compression = 1 // the PHP.ini file 

uczyni serwer podjąć niezbędne sprawdzić nagłówek żądania, kompresji, wyślij pokrewne nagłówki

można również zrobić w plikach PHP przed ob_start()

ini_set("zlib.output_compression", 1); 

I aby Apache kompresowania zasobów statycznych (np: .js, pliki .css) zrobić jak Kamlesh zrobił w swojej odpowiedzi