本文實(shí)例講述了PHP實(shí)現(xiàn)動(dòng)態(tài)壓縮js與css文件的方法。分享給大家供大家參考,具體如下:
正式發(fā)布產(chǎn)品時(shí),我們希望將項(xiàng)目里的js,css合并壓縮,以減少http請(qǐng)求、防止輕易查看源代碼。
使用
只需要在頭部引入一下代碼即可:
meta charset="utf-8"/> title>demo/title> ?php //定義需要壓縮的文件 $css = array( CSS_PATH . 'base.css', CSS_PATH . 'style.css', CSS_PATH . 'my.css' ); $js = array( PUB_PATH . '/lib/zepto.min.js', PUB_PATH . '/js/1.js', JS_PATH . '2.js', ); $css_path = base_url(parse_css($css)); $js_path = base_url(parse_script($js)); ?> link rel="stylesheet" type="text/css" href="?php echo $css_path ?>" rel="external nofollow" > script src="?php echo $js_path ?>">/script> !--下面可以繼續(xù)放不能壓縮或者不想壓縮的文件--> script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js">/script>
這段代碼會(huì)在指定的目錄(例如common/)里生成壓縮過(guò)后的js和css.每次更新了js,css內(nèi)容,請(qǐng)先刪除生成的壓縮文件。
示例:
4e387d5edce14cc2bd6396f6ebb7921b.css 7c10211f113f3175489196d336d67734.js
注意:
編寫(xiě)的css和js文件一定要符合規(guī)范。例如一定要加分號(hào)。js的function可以不加分號(hào)。
引用的資源
/** * 合并壓縮css */ function parse_css($urls) { $url = md5(implode(',', $urls)); $path = FCPATH. 'static/parse/'; $css_url = $path . $url . '.css'; if (!file_exists($css_url)) { if (!file_exists($path)) mkdir($path, 0777); $css_content = ''; foreach ($urls as $url) { $css_content .= @file_get_contents($url); } $css_content = str_replace("\r\n", '', $css_content); //清除換行符 $css_content = str_replace("\n", '', $css_content); //清除換行符 $css_content = str_replace("\t", '', $css_content); //清除制表符 $css_content = str_replace("../images/", "./../common/images/", $css_content); @file_put_contents($css_url, $css_content); } $css_url = str_replace(FCPATH, '', $css_url); return $css_url; } /** * 合并壓縮js */ function parse_script($urls) { $url = md5(implode(',', $urls)); $path = FCPATH. '/static/parse/'; $js_url = $path . $url . '.js'; if (!file_exists($js_url)) { if (!file_exists($path)) mkdir($path, 0777); load_qy_lib('JavaScriptPacker'); $js_content = ''; foreach ($urls as $url) { $append_content = @file_get_contents($url) . "\r\n"; $packer = new JavaScriptPacker($append_content); $append_content = $packer->_basicCompression($append_content); $js_content .= $append_content; } @file_put_contents($js_url, $js_content); } $js_url = str_replace(FCPATH, '', $js_url); return $js_url; }
項(xiàng)目里引用到第三方類庫(kù)JavaScriptPacker可以在github下載:
gkralik/php-uglifyjs
https://github.com/gkralik/php-uglifyjs
/** * 9 April 2008. version 1.1 * * This is the php version of the Dean Edwards JavaScript's Packer, * Based on : * * ParseMaster, version 1.0.2 (2005-08-19) Copyright 2005, Dean Edwards * a multi-pattern parser. * KNOWN BUG: erroneous behavior when using escapeChar with a replacement * value that is a function * * packer, version 2.0.2 (2005-08-19) Copyright 2004-2005, Dean Edwards * * License: http://creativecommons.org/licenses/LGPL/2.1/ * * Ported to PHP by Nicolas Martin. * * ---------------------------------------------------------------------- * changelog: * 1.1 : correct a bug, '\0' packed then unpacked becomes '\'. * ---------------------------------------------------------------------- * * Changes: * 2014-08-28: grkalik: change class for composer support. no functionality change. * */
PS:這里再為大家推薦幾款相似的在線工具供大家參考:
JavaScript壓縮/格式化/加密工具:
http://tools.jb51.net/code/jscompress
在線CSS代碼壓縮、格式化工具:
http://tools.jb51.net/code/css
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php文件操作總結(jié)》、《PHP目錄操作技巧匯總》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》及《php程序設(shè)計(jì)算法總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
標(biāo)簽:常德 宿遷 宜春 工商登記 澳門(mén) 佛山 延安 深圳
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)動(dòng)態(tài)壓縮js與css文件的方法》,本文關(guān)鍵詞 PHP,實(shí)現(xiàn),動(dòng)態(tài),壓縮,與,css,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。