现在的位置: 首页 > 综合 > 正文

PHP 网站优化-小记

2012年09月18日 ⁄ 综合 ⁄ 共 2582字 ⁄ 字号 评论关闭

Apache+php 网站性能优化

1.开启GZIP压缩(针对文件大小)  网页大小可以压缩率可以达到百分之70多;

   一、打开php.ini配置文件,找到zlib.output_compression = Off,将

zlib.output_compression = Off;

zlib.output_compression_level = -1

修改为

zlib.output_compression = On;
zlib.output_compression_level = 6

 

php gzip配置知识点:

  1、默认php是不开启zlib整站压缩输出的,而是通过对需要压缩输出的页面使用ob_gzhandler函数实现,两者只能二选一,否则会报错。

  2、zlib.output_compression默认值为Off,你可以将其设置为On,或者output buffer size(默认为4k)

  3、zlib.output_compression_level代表压缩比,默认推荐设置压缩比值为6,可选范围为1-9,-1代表关闭php zlib(gzip)压缩

  二、保存php.ini配置文件,并重启apache服务器

  三、打开apache 配置文件httpd.conf,配置装载deflate_module

     #LoadModule deflate_module modules/mod_deflate.so

      去除开头的#号;

设置压缩类型

<IfModule deflate_module>  
    SetOutputFilter DEFLATE  
    # Don’t compress images and other  
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary  
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary  
    SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary  
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css  
    AddOutputFilterByType DEFLATE application/ms* applicationnd* application/postscript application/javascript application/x-javascript

</IfModule>  

并重启apache即可。

2.减少request

  一、文件合并

       方法(1)

                    

下面是使用PHP通过GZIP压缩CSS的实例。

在存放CSS的文件夹中新建一个style.php文件,在此文件中加入以下代码:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

if(extension_loaded('zlib')){//检查服务器是否开启了zlib拓展
ob_start('ob_gzhandler');
}
header ("content-type: text/css; charset: gb2312");//注意修改到你的编码
header ("cache-control: must-revalidate");
$offset = 60 * 60 * 24;//css文件的距离现在的过期时间,这里设置为一天
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
ob_start("compress");
function compress($buffer) {//去除文件中的注释
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
return $buffer;
}
 
//包含你的全部css文档
include('global.css');
include('layout.css');
 
if(extension_loaded('zlib')){
ob_end_flush();//输出buffer中的内容,即压缩后的css文件
}
?>

 

如果你处理的是JavaScript文件,你需要将上面代码中的第5行的Content-type修改成以下:

header ("content-type:application/x-javascript; charset: gb2312");

同样需要注意的是文件的编码,这里我用的是gb2312,如果你采用的是UTF-8或其他编码,修改成对应的即可。

修改完成之后,在原引入CSS和JS文件的地方,将.css后缀/.js后缀的文件更换成这个style.php文件即可,如:

script type="text/javascript" src="http://www.i1323.net/scripts/11.js.php?v=121

由于上面代码中使用到了HTTP的Expires(过期)属性用于在客户端缓存CSS/JS代码,所以,如果过期时间设置的太长(比如2020 年),当你在服务器端修改了JS/CSS代码时,客户端可能不会立即生效。解决办法是:在php文件后面添加一个随机参数,如上面例子中的v=121,当下次修改了文件时,记得相应修改此随机参数即可。

     方法(2)

   可以使用第三方框架如 Mint 解压到根目录就行 使用很方便 例如下:

<SCRIPT src="min/f=/js/jquery1.8.js,/js/global.js,/js/index.js,/js/jquery-powerFloat.js,/js/util.js," type=text/javascript></SCRIPT>
 一次加载所有所需的JS

  二、懒加载

例如使用瀑布流,按要求优化首次加载的资源特别是图片比较多的时候。使用AJAX加载会较多。

 

三、资源大小优化

JS、CSS、图片 等资源 尽量將大小压缩至最小

JS、CSS 推荐工具yuicompressor

抱歉!评论已关闭.