htaccess缓存和gzip压缩

问题描述:

有人可以提供一个优化的.htaccess配置来处理典型网站的压缩,浏览器缓存,代理缓存等吗?htaccess缓存和gzip压缩

除了我的访客,我还试图让Google PageSpeed高兴。 我想使用缓存和gzip压缩通过.htaccess请帮助我的代码!

我想缓存icon,pdf,flv,jpg,png,gif,js,css,swf文件很长一段时间

我想缓存xml,txt文件2天

我想缓存html文件2天

我想压缩我html,txt,css,js,php文件因为那些文件很大。

有什么办法可以使用.htaccess来gzip图像吗?

+1

使用'gzip'压缩图像没有多大意义,因为GIF,JPEG或PNG已经是压缩格式。压缩它们只会损失服务器上的CPU资源,而没有任何带宽增益。 –

+0

@hakre:除了这个家伙,我没有正确的答案! –

+1

你是@Hamid Seyyedi?如果你是,这个用户帐户和[你的另一个](http://*.com/users/784971/hamid-seyyedi)需要合并成一个帐户。你不能有两个独立的账户。 –

# 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:除了这个家伙,我没有正确的答案!睁开你的眼睛! –

+2

部分没有为我工作。当我在我自己的网站上尝试时,我得到错误500! 但是下面的答案中的AddOutputFilterByType方法完美地工作。 这两种方法有什么区别? – maxxon15

+1

Apache 1.3使用[mod_gzip](http://sourceforge.net/projects/mod-gzip/),而Apache 2.x使用[mod_deflate](http://httpd.apache.org/docs/2.0/mod/mod_deflate的.html)。所以请检查你的apache版本,它的重要性! – Andron

试试这个:

<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

在Apache 2.4中,这两个模块必须启用使用'deflating':mod_deflate.so和mod_filter.so – Andron

您可以使用代码: -

<Files *> 
    #Compress 

    SetOutputFilter GZIP 

    #Caching 

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


</Files> 

你应该在你的.htaccess文件中使用以下规则相信我,这将增加最低10分如果你还没有使用它。

 

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" 

通过的.htaccess

对于大多数人读这启用压缩,压缩是通过添加一些代码到一个名为.htaccess文件的虚拟主机/服务器上启用。这意味着去你的虚拟主机上的文件管理器(或任何你去添加或上传文件)。

.htaccess文件控制着您网站的许多重要事情。如果您对.htaccess文件不熟悉,请阅读我的.htaccess文章以了解如何在更改前了解如何使用。

下面的代码应该添加到您的.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> 

保存.htaccess文件,然后刷新网页。

检查压缩是否在使用Gzip compression tool