Asp.Net使用Yahoo.Yui.Compressor.dll壓縮Js|Css
阿新 • • 發佈:2018-08-12
引用 each space 添加 需要 rip utf 取消 mappath
網上壓縮css和js工具很多,但在我們的系統中總有特殊的地方。也許你會覺得用第三方的壓縮工具很麻煩。我就遇到了這樣問題,我不想在本地壓縮,只想更新到服務器上去壓縮,服務器壓縮也不用備份之類的操作。於是我就想著自己實現壓縮工具。
初步需求如下:
- 使用Yahoo.Yui.Compressor 2.0版本
- 只對網站目錄下指定文件夾中css和js進行壓縮
- 使用到了JQuery插件,所以有很多都是壓縮過的js。所以對文件名稱中保存min的不進行壓縮
- 不需要備份文件
- 如在第一次訪問文件時候進行壓縮或應用程序啟動時候進行壓縮?
實現(應用程序啟動壓縮版本):
- 引用 Yahoo.Yui.Compressor.dll
- 在Global.asax的Application_Start事件中加入處理代碼--code:
ar
files = System.IO.Directory.GetFiles(Server.MapPath(
"~/"
),
"*.*"
, SearchOption.AllDirectories);
foreach
(
var
file
in
files)
{
FileInfo finfo =
new
FileInfo(file);
//todo 你可以在文件夾添加可以文件記錄最後壓縮時間.再判斷文件最後修改時間是在上一次壓縮時間之後的文件.而且這裏還可以做異步處理
string
strContent = File.ReadAllText(file, Encoding.UTF8);
//名稱不是min
//todo 可能需要更完善的判斷
if
(!file.Contains(
".min."
))
{
//取消文件只讀
File.SetAttributes(file, FileAttributes.Normal);
if
(finfo.Extension.ToLower() ==
".js"
)
{
//初始化JS壓縮類
var
js =
new
JavaScriptCompressor();
js.CompressionType = CompressionType.Standard;
//壓縮類型
js.Encoding = Encoding.UTF8;
//編碼
js.IgnoreEval =
false
;
//大小寫轉換
js.ThreadCulture = System.Globalization.CultureInfo.CurrentCulture;
//壓縮該js
strContent = js.Compress(strContent);
File.WriteAllText(file, strContent, Encoding.UTF8);
}
else
if
(finfo.Extension.ToLower()==
".css"
)
{
//進行CSS壓縮
CssCompressor css =
new
CssCompressor();
strContent = css.Compress(strContent);
File.WriteAllText(file, strContent, Encoding.UTF8);
}
}
}
完整代碼下載:http://files.cnblogs.com/xuchengzone/JS-CSS.Compressor.rar
https://www.cnblogs.com/stone_w/archive/2012/12/11/2812538.htmlAsp.Net使用Yahoo.Yui.Compressor.dll壓縮Js|Css