当前位置:首页 > PHP教程 > php高级应用 > 列表

用PHP在服务端合并多个JS和CSS文件减少HTTP请求,提高速度

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-15 11:25:07 浏览: 评论:0 

在Web,js,css文件会越多,那么对就增加了http请求数,解决该问题的一个好的方法就是合并js,css文件,下面就简单介绍一个方法,十分简单,本文以实现原理为主,代码可能会有出入,如果大家直接用请调试一下.

HTML代码如下:

  1. <link rel="stylesheet" type="text/css" href="cssmin.php?get=base,style1,style2,global&path=css/&v=20131023" /> 
  2. <script type="text/javascript" src="jsmin.php?get=jquery-1.6.4.min.js,minjquery.js,minjquery.ui.js,test.js,global.js&path=js/&v=20131023"></script> 

PHP 代码如下:

  1. //输出JS 
  2. header ("Content-type:Application/x-javascript; Charset: utf-8"); 
  3. if(isset($_GET)) { 
  4.     $files = explode(","$_GET['get']); 
  5.     $str = ''
  6.     foreach ($files as $key => $val){ 
  7.         $str .= file_get_contents($_GET['path'].$val); 
  8.     } 
  9.  
  10.     $str = str_replace("t"""$str); //清除空格 
  11.     $str = str_replace("rn"""$str);  
  12.     $str = str_replace("n"""$str);  
  13.  
  14.     // 删除单行注释 
  15.     $str = preg_replace("///s*[a-zA-Z0-9_x7f-xff][a-zA-Z0-9_x7f-xff]*/"""$str);  
  16.     // 删除多行注释 
  17.     $str = preg_replace("//*[^/]**//s"""$str); 
  18.  
  19.     echo $str
  20.  
  21. //输出CSS 
  22. header ("content-type:text/css; charset: utf-8"); 
  23. if(isset($_GET)) { 
  24.     $files = explode(","$_GET['get']); 
  25.     $fc = ''
  26.     foreach ($files as $key => $val){ 
  27.         $fc .= file_get_contents($_GET['path'].$val.".css"); 
  28.     }  //开源软件:phpfensi.com 
  29.     $fc = str_replace("t"""$fc); //清除空格 
  30.     $fc = str_replace("rn"""$fc);  
  31.     $fc = str_replace("n"""$fc);  
  32.     $fc = preg_replace("//*[^/]**//s"""$fc);  
  33.     echo $fc;  

只是个简单原型,没有封装,另外,合并后的文件记得配合缓存.

附上一个相关的开源项目:http://code.google.com/p/minify/

Tags: PHP服务端 HTTP请求

分享到: