2011-07-17 20 views
27

Czy ktoś może zapewnić mi zoptymalizowaną konfigurację .htaccess, która obsługuje kompresję, buforowanie przeglądarki, buforowanie proxy itd. W przypadku typowej strony internetowej?Kompresja pamięci podręcznej i gzip przez htaccess

Oprócz moich użytkowników staram się również usprawniać Google PageSpeed. Chcę używać kompresji podręcznej i gzip przez .htaccess proszę mi pomóc z jej kodu!

Chcę buforować icon,pdf,flv,jpg,png,gif,js,css,swf plików przez długi czas

Chcę buforować xml,txt plików przez 2 dni

Chcę buforować html plików przez 2 dni

i chcę skompresować moje html,txt,css,js,php plików ponieważ mają one duży rozmiar pliku.

Czy istnieje sposób na gzip obrazów za pomocą .htaccess?

+1

Kompresowanie obrazów za pomocą 'gzip' nie jest zbyt interesujące, ponieważ GIF, JPEG lub PNG są już skompresowanymi formatami. Kompresowanie ich byłoby po prostu utratą zasobów procesora CPU na twoim serwerze, bez żadnego przyrostu przepustowości. –

+0

@hakre: nie ma dla mnie poprawnej odpowiedzi oprócz tego kolesia! –

+1

Czy jesteś @Hamid Seyyedi? jeśli tak, to konto użytkownika i [inne] (http://stackoverflow.com/users/784971/hamid-seyyedi) muszą zostać połączone w jedno konto. Nie możesz mieć dwóch oddzielnych kont. –

Odpowiedz

44
# 480 weeks 
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Cache-Control "max-age=290304000, public" 
</FilesMatch> 

# 2 DAYS 
<FilesMatch "\.(xml|txt)$"> 
Header set Cache-Control "max-age=172800, public, must-revalidate" 
</FilesMatch> 

# 2 HOURS 
<FilesMatch "\.(html|htm)$"> 
Header set Cache-Control "max-age=7200, must-revalidate" 
</FilesMatch> 

<ifModule mod_gzip.c> 
    mod_gzip_on Yes 
    mod_gzip_dechunk Yes 
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ 
    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> 
+0

@hakre: nie ma dla mnie poprawnej odpowiedzi oprócz tego kolesia! Otwórz oczy! –

+2

Część nie działa dla mnie. Kiedy próbowałem go na mojej własnej stronie, otrzymałem błąd 500! Jednak metoda AddOutputFilterByType w poniższej odpowiedzi działa idealnie. Jaka jest różnica między tymi dwoma metodami? – maxxon15

+1

Apache 1.3 używa [mod_gzip] (http://sourceforge.net/projects/mod-gzip/), podczas gdy Apache 2.x używa [mod_deflate] (http://httpd.apache.org/docs/2.0/mod/mod_deflate .html). Więc sprawdź swoją wersję apache, jej znaczenie! – Andron

16

Spróbuj tego:

<IfModule mod_deflate.c> 
    #The following line is enough for .js and .css 
    AddOutputFilter DEFLATE js css 
    AddOutputFilterByType DEFLATE text/plain text/xml application/xhtml+xml text/css application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php application/x-httpd-fastphp text/html 

    #The following lines are to avoid bugs with some browsers 
    BrowserMatch ^Mozilla/4 gzip-only-text/html 
    BrowserMatch ^Mozilla/4\.0[678] no-gzip 
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule> 

# BEGIN EXPIRES 
<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault "access plus 10 days" 
    ExpiresByType text/css "access plus 1 week" 
    ExpiresByType text/plain "access plus 1 month" 
    ExpiresByType image/gif "access plus 1 month" 
    ExpiresByType image/png "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month" 
    ExpiresByType application/x-javascript "access plus 1 month" 
    ExpiresByType application/javascript "access plus 1 week" 
    ExpiresByType application/x-icon "access plus 1 year" 
</IfModule> 
# END EXPIRES 

<IfModule mod_headers.c> 
    <FilesMatch "\.(js|css|xml|gz)$"> 
     Header append Vary Accept-Encoding 
    </FilesMatch> 
    <FilesMatch "\.(ico|jpe?g|png|gif|swf)$"> 
     Header set Cache-Control "public" 
    </FilesMatch> 
    <FilesMatch "\.(css)$"> 
     Header set Cache-Control "public" 
    </FilesMatch> 
    <FilesMatch "\.(js)$"> 
     Header set Cache-Control "private" 
    </FilesMatch> 
    <FilesMatch "\.(x?html?|php)$"> 
     Header set Cache-Control "private, must-revalidate" 
    </FilesMatch> 
</IfModule> 
+2

W apache 2.4 oba moduły muszą być włączone, aby użyć 'deflating': mod_deflate.so i mod_filter.so – Andron

2

Można użyć kodu jak: -

<Files *> 
    #Compress 

    SetOutputFilter GZIP 

    #Caching 

    Header set Cache-Control "max-age=3600, public" 


</Files> 
1

Należy stosować następującą regułę w pliku .htaccess uwierzcie mi będzie to wzrost minimalnych 10 punktów jeśli już tego nie używasz.

 

mod_gzip_on Yes 
mod_gzip_dechunk Yes 
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ 
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.* 


AddOutputFilterByType DEFLATE application/javascript 
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject 
AddOutputFilterByType DEFLATE application/x-font 
AddOutputFilterByType DEFLATE application/x-font-opentype 
AddOutputFilterByType DEFLATE application/x-font-otf 
AddOutputFilterByType DEFLATE application/x-font-truetype 
AddOutputFilterByType DEFLATE application/x-font-ttf 
AddOutputFilterByType DEFLATE application/x-javascript 
AddOutputFilterByType DEFLATE application/xhtml+xml 
AddOutputFilterByType DEFLATE application/xml 
AddOutputFilterByType DEFLATE font/opentype 
AddOutputFilterByType DEFLATE font/otf 
AddOutputFilterByType DEFLATE font/ttf 
AddOutputFilterByType DEFLATE image/svg+xml 
AddOutputFilterByType DEFLATE image/x-icon 
AddOutputFilterByType DEFLATE text/css 
AddOutputFilterByType DEFLATE text/html 
AddOutputFilterByType DEFLATE text/javascript 
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/xml 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4\.0[678] no-gzip 
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
Header append Vary User-Agent 


ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType text/html "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType text/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access 1 month" 

1

Włącz kompresję poprzez .htaccess

Dla większości ludzi czytających to, kompresja jest włączona przez dodanie kodu do pliku called.htacces na ich internetowej hosta/serwera. Oznacza to przejście do menedżera plików (lub dowolnego miejsca w celu dodania lub przesłania plików) na swój serwer.

Plik .htaccess kontroluje wiele ważnych rzeczy w witrynie. Jeśli nie jesteś zaznajomiony z plikiem .htaccess, przeczytaj mój artykuł z .htaccess, aby dowiedzieć się, jak to zmienić.

Poniższy kod powinien być dodany do pliku .htaccess ...

<ifModule mod_gzip.c> 
mod_gzip_on Yes 
mod_gzip_dechunk Yes 
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ 
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> 

Zapisz plik .htaccess a następnie odświeżyć swoją stronę.

Sprawdź, czy twoja kompresja działa przy użyciu Gzip compression tool.

Powiązane problemy