在这里让我们一起学习,一起提高!
Apache2开启Gzip和Expires来提升服务器性能,经过下面设置后,据说性能可以提升一倍哦
在Apache的配置文件中找到下面两行,将注释#去掉,重启。
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
在你网站的目录下新建.htaccess(或直接添加在配置文件下),添加如下内容:
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
解释一下。ExpiresByType是通过MIME类型来设置具体文件的缓存时间,A表示访问,A后面的数字表示访问后的缓存时间。AddOutputFilterByType表示根据后面的MIME类型来压缩文件,这里对css,html,gif,jpeg,png,JavaScript等进行gzip压缩。更多选项请参考apache手册哦。
同理,如果CSS你确定每次更新后都会更改文件名的话,也可以加上
ExpiresByType text/css A2592000
但是如果更新CSS后,没能更改文件名称的话,有可能会造成用户不知道CSS已经更新,而不会去下载最新的CSS,当然CTRL+F5,或是清空缓存是可以的,具体是否需要这条,就自行权衡了
关闭ETag。
Etag的问题在于,它是根据可以辨别网站所在的服务器的具有唯一性的属性来生成的。当浏览器从一台服务器上获得页面内容后到另外一台服务器上进行验证时ETag就会不匹配,这种情况对于使用服务器组和处理请求的网站来说是非常常见的。在配置文件中写入下面一行即可:
FileETag none
如果是多服务器负载均衡,可以设置为FileETag MTime Size,
apache默认设置为FileETag INode MTime Size,去掉INode。
在Apache的配置文件中找到下面两行,将注释#去掉,重启。
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
在你网站的目录下新建.htaccess(或直接添加在配置文件下),添加如下内容:
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
解释一下。ExpiresByType是通过MIME类型来设置具体文件的缓存时间,A表示访问,A后面的数字表示访问后的缓存时间。AddOutputFilterByType表示根据后面的MIME类型来压缩文件,这里对css,html,gif,jpeg,png,JavaScript等进行gzip压缩。更多选项请参考apache手册哦。
同理,如果CSS你确定每次更新后都会更改文件名的话,也可以加上
ExpiresByType text/css A2592000
但是如果更新CSS后,没能更改文件名称的话,有可能会造成用户不知道CSS已经更新,而不会去下载最新的CSS,当然CTRL+F5,或是清空缓存是可以的,具体是否需要这条,就自行权衡了
关闭ETag。
Etag的问题在于,它是根据可以辨别网站所在的服务器的具有唯一性的属性来生成的。当浏览器从一台服务器上获得页面内容后到另外一台服务器上进行验证时ETag就会不匹配,这种情况对于使用服务器组和处理请求的网站来说是非常常见的。在配置文件中写入下面一行即可:
FileETag none
如果是多服务器负载均衡,可以设置为FileETag MTime Size,
apache默认设置为FileETag INode MTime Size,去掉INode。
apache1.3.x可以用mod_gzip进行优化网页浏览的速度,可以明显的感觉到速度的提升。在apache2中也尝试用mod_gzip,但是配置后确发现网页不能正确显示(空白页),所以改换mod_deflate。
在Linux命令行下运行以下命令安装mod_deflate模块(斜体是apache2的目录)
/usr/local/apache2/bin/apxs -i -c /root/httpd-2.0.48/modules/filters/mod_deflate.c
编辑httpd.conf,加入以下内容:
LoadModule deflate_module modules/mod_deflate.so
DeflateFilterNote ratio
LogFormat '"%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" (%{ratio}n)' deflate
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
#Header append Vary User-Agent env=!dont-vary
</Location>
#查找Customlog 注释原来的的一行,改成
CustomLog logs/deflate_log deflate
附注:关于mod_deflate的详细内容,可以参考http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
在Linux命令行下运行以下命令安装mod_deflate模块(斜体是apache2的目录)
/usr/local/apache2/bin/apxs -i -c /root/httpd-2.0.48/modules/filters/mod_deflate.c
编辑httpd.conf,加入以下内容:
LoadModule deflate_module modules/mod_deflate.so
DeflateFilterNote ratio
LogFormat '"%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" (%{ratio}n)' deflate
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
#Header append Vary User-Agent env=!dont-vary
</Location>
#查找Customlog 注释原来的的一行,改成
CustomLog logs/deflate_log deflate
附注:关于mod_deflate的详细内容,可以参考http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
众所周知,在HTTP1.1中支持gzip压缩,这样可以缩小页面的容量从而加快页面的显示速度。
Apache默认的http.conf配置文件中没有开启gzip压缩,apache1.3.x可以用mod_gzip进行优化网页浏览的速度,在apache2中也尝试用mod_gzip,但是配置后确发现网页不能正确显示(空白页),所以改换为mod_deflate。
下面说一下怎样在Apache2下开启gzip压缩:
# 加载deflate模块
LoadModule deflate_module modules/mod_deflate.so
# 设置压缩频率,取值范围在 1(最低压缩率) 到 9(最高压缩率)之间
# 不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源
DeflateCompressionLevel 3
# Compress everything except images
<Location />
# 插入过滤器
SetOutputFilter DEFLATE
# Netscape 4.x 有一些问题...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 有更多的问题
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE 会伪装成 Netscape ,但是事实上它没有问题
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# 不压缩图片
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>
通过上述的设置之后就在Apache中开启的HTTP压缩,试一下页面显示速度是不是提升了很多?
Apache默认的http.conf配置文件中没有开启gzip压缩,apache1.3.x可以用mod_gzip进行优化网页浏览的速度,在apache2中也尝试用mod_gzip,但是配置后确发现网页不能正确显示(空白页),所以改换为mod_deflate。
下面说一下怎样在Apache2下开启gzip压缩:
# 加载deflate模块
LoadModule deflate_module modules/mod_deflate.so
# 设置压缩频率,取值范围在 1(最低压缩率) 到 9(最高压缩率)之间
# 不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源
DeflateCompressionLevel 3
# Compress everything except images
<Location />
# 插入过滤器
SetOutputFilter DEFLATE
# Netscape 4.x 有一些问题...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 有更多的问题
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE 会伪装成 Netscape ,但是事实上它没有问题
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# 不压缩图片
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>
通过上述的设置之后就在Apache中开启的HTTP压缩,试一下页面显示速度是不是提升了很多?