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壓縮方法及批量壓縮JS
- phpstorm 壓縮 JSPHPORMJS
- webpack css壓縮方案WebCSS
- 狀態壓縮
- Swoole WebSoctet 使用 zlib 壓縮之 PHP 與 pako.jsWebPHPJS
- arcgis js:動態引入js、css依賴JSCSS
- CSP之壓縮編碼(動態規劃)動態規劃
- 動態規劃中初識狀態壓縮(入門)動態規劃
- webpack4.x css 壓縮WebCSS
- js圖片壓縮推薦JS
- js上傳圖片壓縮JS
- 簡易狀態壓縮DP
- [web效能優化] - 使用線上工具對html、js、css進行壓縮Web優化HTMLJSCSS
- js動態載入 js檔案和 css檔案JSCSS
- 簡單好用的js 壓縮工具JS
- CSS單行格式化與壓縮CSS
- webpack4 css打包壓縮問題WebCSS
- PHP的LZF壓縮擴充套件工具PHP套件
- HDU 3006 The Number of set (狀態壓縮)
- 論文閱讀 狀態壓縮
- js動態改變css偽類樣式JSCSS
- 動態規劃——用二進位制表示集合的狀態壓縮DP動態規劃
- JS—圖片壓縮上傳(單張)JS
- 檔案壓縮和解壓縮
- POJ3279 Fliptile【狀態壓縮+DFS】
- 優雅的實現動態載入 css、jsCSSJS
- mui仿京東地址 css + js (動態資料)UICSSJS
- 圖片純前端JS壓縮的實現前端JS
- Python實現壓縮和解壓縮Python
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- PHP的bz2壓縮擴充套件工具PHP套件
- 原生JS動態載入JS、CSS檔案及程式碼指令碼JSCSS指令碼
- HDU 5816 Hearthstone(狀態壓縮DP+概率)
- 使用 JS 來動態操作 css ,你知道幾種方法?JSCSS
- Linux tar分卷壓縮與解壓縮Linux
- gulp之自動化靜態資源壓縮合並加版本號
- JS中通過指定大小來壓縮圖片JS