PHP動態壓縮js,css
正式釋出產品時,我們希望將專案裡的js,css合併壓縮,以減少http請求、防止輕易檢視原始碼。
使用
只需要在頭部引入一下程式碼即可:
<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 ?>">
<script src="<?php echo $js_path ?>"></script>
<!--下面可以繼續放不能壓縮或者不想壓縮的檔案-->
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
這段程式碼會在指定的目錄(例如common/)裡生成壓縮過後的js和css.每次更新了js,css內容,請先刪除生成的壓縮檔案。
示例:
4e387d5edce14cc2bd6396f6ebb7921b.css
7c10211f113f3175489196d336d67734.js
注意:
編寫的css和js檔案一定要符合規範。例如一定要加分號。js的function可以不加分號。
引用的資源
/**
* 合併壓縮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("
", ``, $css_content); //清除換行符
$css_content = str_replace("
", ``, $css_content); //清除換行符
$css_content = str_replace(" ", ``, $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) . "
";
$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;
}
專案裡引用到第三方類庫JavaScriptPacker可以在github下載:
/**
* 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, ` ` packed then unpacked becomes ``.
* ----------------------------------------------------------------------
*
* Changes:
* 2014-08-28: grkalik: change class for composer support. no functionality change.
*
*/
相關文章
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- js和css線上壓縮工具JSCSS
- ASP.NET MVC 4 Optimization的JS/CSS檔案動態合併及壓縮ASP.NETMVCJSCSS
- JS壓縮方法及批量壓縮JS
- JS和CSS壓縮部署,提高訪問效率JSCSS
- 狀態壓縮動態規劃 -- 炮兵陣地動態規劃
- webpack css壓縮方案WebCSS
- CSP之壓縮編碼(動態規劃)動態規劃
- 動態規劃中初識狀態壓縮(入門)動態規劃
- hdu1074動態規劃狀態壓縮動態規劃
- phpstorm 壓縮 JSPHPORMJS
- 使用 gulp 壓縮 JSJS
- ASP.NET MVC 4使用Bundle的打包壓縮JS/CSSASP.NETMVCJSCSS
- 使用yuicompressor-maven-plugin壓縮js及css檔案UIMavenPluginJSCSS
- Swoole WebSoctet 使用 zlib 壓縮之 PHP 與 pako.jsWebPHPJS
- webpack4.x css 壓縮WebCSS
- JSONB壓縮版本ZSONJSON
- AngularJS動態設定CSSAngularJSCSS
- 動態載入JS和CSSJSCSS
- arcgis js:動態引入js、css依賴JSCSS
- js上傳圖片壓縮JS
- js圖片壓縮推薦JS
- 論文閱讀 狀態壓縮
- CSS單行格式化與壓縮CSS
- webpack4 css打包壓縮問題WebCSS
- JAVA壓縮和解壓縮Java
- zip壓縮和解壓縮
- [web效能優化] - 使用線上工具對html、js、css進行壓縮Web優化HTMLJSCSS
- 【轉】在ASP.NET MVC中,使用Bundle來打包壓縮js和cssASP.NETMVCJSCSS
- PHP的LZF壓縮擴充套件工具PHP套件
- 動態規劃——用二進位制表示集合的狀態壓縮DP動態規劃
- 簡單好用的js 壓縮工具JS
- 使用jsmin壓縮javascript指令碼JSJavaScript指令碼
- js 壓縮圖片 H5JSH5
- linux壓縮解壓縮Linux
- 字串的壓縮和解壓縮字串
- POJ3279 Fliptile【狀態壓縮+DFS】
- oracle 靜態資料壓縮分離Oracle