apache对页面进行压缩和页面缓存来提升性能

canca12年前 (2012-03-10)Apache244

            网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度,因此当你为网站性能所苦恼时,你第一个需要着手进行处理的便是尽可能的提升应用程序的执行速度,你可以使用缓存或者是优化代码的执行效率来提升应用程序的速度。

     但是,本文并不是介绍如何来提升应用程序的执行效率,在确保您的应用程序的性能已经达到足够好,同时服务器的性能也完全满足的情况下,不妨来试试网页压缩和页面缓存来进一步提升网页的浏览速度,而且非常重要的是,它完全不需要任何的成本,只不过是会让您的服务器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   
#LoadModule expires_module modules/mod_expires.so   
#LoadModule headers_module modules/mod_headers.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 + Tomcat + Jk config see: http://cancait.blog.163.com/blog/static/21335744201222211237865/

相关文章

AppServ 2.5.9 中集成的 各个软件的版本

AppServ是PHP网页架站工具组合包,泰国的作者将一些网路上免费的架站资源重新包装成单一的安装程序,以方便初学者快速完成架站,AppServ 所包含的软件有:Apache、Apache Monit...

Apache整合IIS通用80端口

第一步:修改httpd.conf文件,启用proxy模块            ...

windows下apache与tomcat整合

jdk1.5.0_04http://java.sun.com/javase/downloads/index_jdk5.jsp在环境变量里面JAVA_HOME=C:\jdk1.5.0_04 tomcat...

apache+JK+tomcat负载均衡配置(windows)

apache+JK+tomcat负载均衡配置(windows)

本文主要是记录windows下apache+JK+tomcat负载均衡的配置过程,方便自己以后备用,也希望能给刚接触的xd提供参考。 实验环境的系统已经安装好了apache2.2.17,安装路径D:\...

授权Apache2 + PHP读写目录权限

摘要:您需要将目录的所有者设置为PHP使用的用户(Web服务器用户)。步骤1:确定PHP用户创建一个包含以下内容的PHP文件:<?php echo `whoami`;&nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。