gzip压缩传输的几种配置方法
gzip是一种网络数据压缩传输技巧,可以让我们的带宽省70%左右,这可是一个非常可观的东西了,下面我来给大家整理几种gzip配置方法吧.
第一种方案: 在.htaccess 中添加如下代码:
AddHandler application/x-httpd-php .css .html .js #这是添加你要压缩的类型 php_value auto_prepend_file [/home/a4284418/public_html/gzip.php] #这是你给这些类型增加一个自动运行的php代码,后面一定要填你空间的绝对地址 gzip.php,代码如下:
<?php ob_start([ob_gzhandler]); ob_start([compress]); //如果出现css不能解释,只显示网页,请加入下面的红色代码,去掉注释符 /* $pathinfo = pathinfo($_SERVER[PHP_SELF]); switch ($pathinfo['extension']) { case [css] : header([Content-type: text/css]); break; //phpfensi.com case [html] : header([Content-type: text/html]); break; case [js] : header([Content-type: text/javascript]); break; default : break; } */ ?> 第二种方案:此种方案是gzip的升级版,可以将gzip的压缩文件缓存下来,避免重复压缩,在.htaccess 中添加:
htaccess RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L],代码如下:
<?php // htaccess RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L] //项目根路径 define(‘ABSPATH’, dirname(__FILE__ ).’/'); //Gzip压缩开关 $cache = true; //存放gz文件的目录,确保可写 $cachedir = ‘gzip-cache/’; if (! is_dir (ABSPATH. $cachedir )) { mkdir (ABSPATH. $cachedir ); } //判断是否支持gzip $gzip = strstr ( $_SERVER [ 'HTTP_ACCEPT_ENCODING' ], ‘gzip’); $deflate = strstr ( $_SERVER [ 'HTTP_ACCEPT_ENCODING' ], ‘deflate’); //看浏览器是否支持gzip 否则就是 deflate,再就是 none $encoding = $gzip ? ‘gzip’ : ( $deflate ? ‘deflate’ : ‘none’); if (!isset( $_SERVER [ 'QUERY_STRING' ])) exit (); //$key=array_shift(explode(‘?’, $_SERVER['QUERY_STRING'])); //$key=str_replace(‘’,],$key); $key = basename ( $_SERVER [ 'QUERY_STRING' ]); //文件的绝对路径 $filename =ABSPATH. $_SERVER [ 'QUERY_STRING' ]; $symbol =’^'; $rel_path = str_replace (ABSPATH,],dirname( $filename )); $namespace = str_replace (‘/’, $symbol , $rel_path ); $cache_filename =ABSPATH. $cachedir . $namespace . $symbol . basename ( $filename ).’.gz’; //生成gz文件路径 $type =]Content-type: text/html]; //默认的类型信息 $pathInfo = pathinfo ( $filename ); //根据后缀判断文件类型信息