好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP压缩javascritp 与CSS的例子 - php高级应用

PHP压缩javascritp 与CSS的例子

有的网站有很多的 CSS 文件,如果将它们合并到一起并且进行 Gzip 压缩会减少请求和文件大小,有利于提高网站加载速度。为了方便我不推荐人工压缩和合并 CSS,而是使用 PHP 代码。

首先将所有 CSS 放到一个目录里,然后在此目录新建一个空的 CSS 文件,命名为 css.php,其实除了后缀命名随便.然后在 PHP 文件里放下边的代码:

<?php  header( 'Content-type: text/css' );  ob_start( "compress" );  function  compress( $buffer ) {    $buffer  = preg_replace( '!/*[^*]**+([^/][^*]**+)*/!' ,  '' ,  $buffer );    $buffer  =  str_replace ( array ( "rn" ,  "r" ,  "n" ,  "t" ,  '  ' ,  '    ' ,  '    ' ),  '' ,  $buffer );    return   $buffer ;  }  /*include('colorpicker.css');   include('jquery-ui.css');   include('style.css');   include('switchery.min.css');*/   foreach (  glob (  "*.css"  )  as   $filename  )  include   $filename ;  ob_end_flush();  ?> 

引入 CSS 文件的代码换成引入这个 PHP 文件,例如:

<link rel= 'stylesheet'  id= 'style-css'   href= '/css/css.php'  type= 'text/css'  media= 'all'  /> 

压缩多个css为一个css,代码如下:

/*    Compress multiple CSS files into one and cache for an hour.     Use the same code for Javascript, but replace below "text/css" with "text/javascript" and of course make sure you include .js files instead of .css ones.    */   ob_start( "ob_gzhandler" );   header( "Content-type: text/css; charset: UTF-8" );       header( "Expires: " . gmdate ( "D, d M Y H:i:s" , time() + 60*60). " GMT" );    include ( 'somefile.css' );   echo   "nn" ;   include ( 'anotherfile.css' );   echo   "nn" ;    ob_flush(); 

下面整理可压缩css,js的函数,代码如下:

/**    * 合并css样式为一个文件    *    * @param unknown_type $urls    * @param unknown_type $path    * @param unknown_type $tmpl_path    * @return unknown    */   function  parse_css( $urls , $path = "./static/" , $tmpl_path = '.' ){       $url  = md5(implode( ',' , $urls ));       $css_url  =  $path . $url . '.css' ;       if (! file_exists ( $css_url )){           if (! file_exists ( $path )) mkdir ($(HdhCmsTestphpfensi测试数据)path,0777);           $css_content  =  '' ;           foreach ( $urls   as   $url ){            $css_content  .= @ file_get_contents ( $url );          }           $css_content  = preg_replace( "/[rn]/" , '' , $css_content );           $css_content  =  str_replace ( "images/" , $tmpl_path . "/images/" , $css_content );          @ file_put_contents ( $css_url , $css_content );      }       return   $css_url ;  }  /**    * 合并js为一个文件    *    * @param unknown_type $urls    * @param unknown_type $path    * @return unknown    */   function  parse_script( $urls , $path = "./static/" ){       $url  = md5(implode( ',' , $urls ));       $js_url  =  $path . $url . '.js' ;       if (! file_exists ( $js_url ))      {           if (! file_exists ( $path )) mkdir ( $path ,0777);           require_once   "inc/javascriptpacker.php" ;           $js_content  =  '' ;           foreach ( $urls   as   $url )          {               $append_content  = @ file_get_contents ( $url ). "rn" ;               $packer  =  new  JavaScriptPacker( $append_content );               $append_content  =  $packer ->pack();               $js_content  .=  $append_content ;          }          @ file_put_contents ( $js_url , $js_content );      }       return   $js_url ;  } 

前台js调用:

<?php  $pagejs[] = $tplurl. "js/jump.js" ;  $jsfile=parse_script($pagejs, "./template/default/js/" , "." );  ?>  <script type= "text/javascript"  src= "<?=$jsfile?>" ></script> 

前台css调用:

<?php  $pagecss [] =  $tplurl . "style/index_top.css" ;  $pagecss [] =  $tplurl . "style/index.css" ;  $cssfile =parse_css( $pagecss , "./template/default/style/" , "." );  ?>  <link rel= "stylesheet"  type= "text/css"  href= "<?=$cssfile?>"  /> 

PHP 文件里就包含了所有被压缩的 CSS 代码,而且可以自动引入 CSS 目录里的所有 CSS 文件,不用在新建 CSS 文件的时候再修改这个 PHP 文件.

查看更多关于PHP压缩javascritp 与CSS的例子 - php高级应用的详细内容...

  阅读:46次