网站地图    收藏   

主页 > 系统 > linux系统 >

linux的gzip压缩传输的几种配置方法

来源:未知    时间:2014-11-25 13:14 作者:xxadmin 阅读:

[导读] gzip是一种网络数据压缩传输技巧,可以让我们的带宽省70%左右,这可是一个非常可观的东西了,下面我来给大家整理几种gzip配置方法吧. 第一种方案: 在.htaccess 中添加如下代码: AddHandlerap...

gzip是一种网络数据压缩传输技巧,可以让我们的带宽省70%左右,这可是一个非常可观的东西了,下面我来给大家整理几种gzip配置方法吧.

第一种方案:在.htaccess 中添加如下代码:

  1. AddHandler application/x-httpd-php .css .html .js 
  2.  
  3. #这是添加你要压缩的类型 
  4.  
  5. php_value auto_prepend_file “/home/a4284418/public_html/gzip.php” 
  6.  
  7. #这是你给这些类型增加一个自动运行的php代码,后面一定要填你空间的绝对地址 

gzip.php,代码如下:

  1. <?php 
  2. ob_start(“ob_gzhandler”); 
  3. ob_start(“compress”); 
  4. //如果出现css不能解释,只显示网页,请加入下面的红色代码,去掉注释符 
  5. /* 
  6.  
  7. $pathinfo = pathinfo($_SERVER[PHP_SELF]); 
  8. switch ($pathinfo['extension']) { 
  9. case “css” : header(“Content-type: text/css”); 
  10. break;  //phpfensi.com 
  11. case “html” : header(“Content-type: text/html”); 
  12. break; 
  13. case “js” : header(“Content-type: text/javascript”); 
  14. break; 
  15. default : break; 
  16. } 
  17. */ 
  18. ?> 

第二种方案:此种方案是gzip的升级版,可以将gzip的压缩文件缓存下来,避免重复压缩,在.htaccess 中添加:

htaccess RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L],代码如下:

  1. <?php 
  2. // htaccess RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L] 
  3. //项目根路径 
  4. define(‘ABSPATH’, dirname(__FILE__).’/'); 
  5. //Gzip压缩开关 
  6. $cache = true; 
  7. //存放gz文件的目录,确保可写 
  8. $cachedir = ‘gzip-cache/’; 
  9. if (!is_dir(ABSPATH.$cachedir)) 
  10. mkdir(ABSPATH.$cachedir); 
  11. //判断是否支持gzip 
  12. $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], ‘gzip’); 
  13. $deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], ‘deflate’); 
  14. //看浏览器是否支持gzip 否则就是 deflate,再就是 none 
  15. $encoding = $gzip ? ‘gzip’ : ($deflate ? ‘deflate’ : ‘none’); 
  16. if(!isset($_SERVER['QUERY_STRING'])) exit(); 
  17. //$key=array_shift(explode(‘?’, $_SERVER['QUERY_STRING'])); 
  18. //$key=str_replace(‘../’,”,$key); 
  19. $key =basename($_SERVER['QUERY_STRING']); 
  20. //文件的绝对路径 
  21. $filename=ABSPATH.$_SERVER['QUERY_STRING']; 
  22. $symbol=’^'; 
  23. $rel_path=str_replace(ABSPATH,”,dirname($filename)); 
  24. $namespace=str_replace(‘/’,$symbol,$rel_path); 
  25. $cache_filename=ABSPATH.$cachedir.$namespace.$symbol.basename($filename).’.gz’;//生成gz文件路径 
  26. $type=”Content-type: text/html”; //默认的类型信息 
  27. $pathInfo = pathinfo($filename); 
  28. //根据后缀判断文件类型信息 
  29. $ext = $pathInfo['extension']; 
  30. switch ($ext){ 
  31. case ‘css’: 
  32. $type=”Content-type: text/css”; 
  33. break
  34. case ‘js’: 
  35. $type=”Content-type: text/javascript”; 
  36. break
  37. default
  38. exit(); 
  39. if($cache
  40. if(file_exists($cache_filename)) 
  41. //假如存在gz文件 
  42. $mtime = filemtime($cache_filename); 
  43. $gmt_mtime = gmdate(‘D, d M Y H:i:s’, $mtime) . ‘ GMT’; 
  44. //读取gz文件输出 
  45. $content = file_get_contents($cache_filename); 
  46. header(“Last-Modified:” . $gmt_mtime); 
  47. header(“Expires: “); 
  48. header(“Cache-Control: “); 
  49. header(“Pragma: “); 
  50. header($type); 
  51. header(“Tips: Normal Respond (Gzip)”); 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论