Apache2+Tomcat性能调整(三)
通过apache对页面进行压缩和页面缓存来提升性
?
网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度,因此当你为网站性能所苦恼时,你第一个需要着手进行处理的便是尽可能的提升应用程序的执行速度,你可以使用缓存或者是优化代码的执行效率来提升应用程序的速度。
???? 但是,本文并不是介绍如何来提升应用程序的执行效率,在确保您的应用程序的性能已经达到足够好,同时服务器的性能也完全满足的情况下,不妨来试试网页压缩和页面缓存来进一步提升网页的浏览速度,而且非常重要的是,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少。
网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 Apache 和 IIS 等。双方的协商过程如下:
???? 首先浏览器请求某个 URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为 gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议,下面我们会介绍二者之间的区别);?
?????WEB 服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容; 浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。?
?????在实际的应用中我们发现压缩的比率往往在 3 到 10 倍,也就是本来 50k 大小的页面,采用压缩后实际传输的内容大小只有 5 至 15k 大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。
??? 页面缓存是将一部分经常不会改变和变动的文件或页面缓存,下次浏览器再次访问这些页面时,而不需要再次去调用这些和下载这次页面的文件或页面,而提高了用户的访问速度。
??? 现在言归正传来谈谈如何使用Apache来对页面进行压缩和页面缓存来提升性能.为了实现这些功能需要三个模块mod_deflate、mod_expires和mod_headers,关于这三个模块的介绍请参考apache文档,这里不再阐述。
要实现这些东西的配置先在httpd.conf文件下找到下面三个地方
#LoadModule?deflate_module?modules/mod_deflate.so??? ??同时去掉前面的“#”,这些模块功能已经开启了,下面我们在配置GZIP和Expires了。配置GZIP和Expires也很容易,我们只需要在httpd.conf 配置文件中启用并进行相关的配置即可,配置如下:
?
<IfModule mod_expires.c> ? ? ??
ExpiresActive on ? ? ?
ExpiresDefault "now plus 1 day" ? ??
ExpiresByType image/x-icon "access plus 10 year" ? ??
ExpiresByType image/gif "access plus 1 month" ? ??
ExpiresByType image/jpeg "access plus 1 month" ? ??
ExpiresByType text/css "now plus 1 month" ? ??
ExpiresByType text/javascript "now plus 1 month" ? ??
ExpiresByType application/x-javascript "now plus 1 month" ? ??
ExpiresByType text/html "now plus 5 minutes" ? ??
ExpiresByType text/plain "now plus 1 month" ? ??
ExpiresByType image/js "access plus 1 month" ? ??
ExpiresByType application/x-shockwave-flash "access plus 1 week" ? ??
<FilesMatch "\.(gif|jpe?g|png)$"> ? ? ?
? ? Header set Cache-Control "max-age=604800" ? ??
? ? Header unset ETag ? ? ?
</FilesMatch> ? ? ?
</IfModule> ? ? ?
FileETag none ? ? ?
<ifmodule mod_deflate.c> ? ? ?
DeflateCompressionLevel 9 ? ??
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-jsp ? ? ?
AddOutputFilter DEFLATE js css ? ? ?
</ifmodule> ? ? ?
<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>????
? ?
通过上述配置你就成功通过apache对页面进行压缩和页面缓存来提升性能。
其他相关参考页面:
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html
http://blog.csdn.net/joliny/archive/2008/02/27/2124344.aspx
http://1229363.blog.163.com/blog/static/19743427200772372018878/
?