background image

1.2. 压缩页面

  HTTP1.1 协议支持页面压缩传送,也就是说服务器把一个页面压缩传送
到客户端,然后在客户端将页面解压缩再显示给客户。在服务器端有两种传输
方式,一种是页面事先已经压缩好了,传送时只要将压缩页面传送到客户端
就行,这种适用于静态网页多的情况,但是对于大多数站点,动态页面比较
多,这种方法不太适合,因为很多传到客户端的页面其实是没有的,是服务
器接到客户端用户请求动态产生的,所以就要求每生成一个动态页面都要在
传到客户端以前先打包压缩。从 PHP 的 4.0.4 版以后,可以在 php.ini 文件中

增加一行配置 output_handler = ob_gzhandler”,这样每个动态生成的页
面在传送到客户端之前都会进行压缩,但是根据 PHP 官方站点的说明,这个

参数不能与 zlib.output_compression = on”参数同时使用,因为容易引起
PHP 工作不正常,另外它只能压缩 PHP 程序的动态生成的页面,对于大量的
静态页面尤其是图像文件就不行了。但是 mod_gzip 模块为 Apahe 提供了将
静态页面在传给客户端以前先压缩的功能,它的压缩比最大能到 10,一般情况

 

下可以到 3,也就是说网站的传输速率一下提高了三倍多。要使用 mod_gzip
还要对 Apache 进行相应的配置,需要在 httpd.conf 文件中加入一些参数:

mod_gzip_on Yes(模块是否生效)

mod_gzip_minimum_file_size 1002(最小压缩文件大小)  

mod_gzip_maximum_file_size 0(最大压缩文件大小,0 表示没有限制) 

mod_gzip_maximum_inmem_size 60000(最大可占用内存)  

mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以

gif 结尾的文件要压缩传送)  

mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION   

mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION 

mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION 

  1.3. 文件缓存

这种方法通常是针对 PHP、PERL 等 CGI 程序而言的,因为这些程序有一个共同的特

征就是接到用户的请求后不是马上将结果返回给用户,而是经过解释器解释执行后将执
行结果返回给客户,这期间通常都要涉及到数据库的访问。这样就会出现一个问题,当两
个用户访问同一个页面时,系统将分别对两个请求进行操作,但事实上这两个操作可能
是一模一样的,这样无形当中增加了系统的负担。

所以通常的解决办法是在系统内存中开辟出一段空间,当用户第一次访问页
面后将执行结果存放在该内存中,当有用户再一次访问该页面时,系统就将