专栏首页王磊的博客Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css

Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css

网上压缩css和js工具很多,但在我们的系统中总有特殊的地方。也许你会觉得用第三方的压缩工具很麻烦。我就遇到了这样问题,我不想在本地压缩,只想更新到服务器上去压缩,服务器压缩也不用备份之类的操作。于是我就想着自己实现压缩工具。

初步需求如下:

  • 使用Yahoo.Yui.Compressor 2.0版本
  • 只对网站目录下指定文件夹中css和js进行压缩
  • 使用到了JQuery插件,所以有很多都是压缩过的js。所以对文件名称中保存min的不进行压缩
  • 不需要备份文件
  • 如在第一次访问文件时候进行压缩或应用程序启动时候进行压缩? 

实现(应用程序启动压缩版本): 

  • 引用 Yahoo.Yui.Compressor.dll
  • 在Global.asax的Application_Start事件中加入处理代码--code:
var 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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js堆栈溢出的问题

        js是最令程序员头疼的问题了,不是语法也不是使用头疼,而是调试头疼,虽然有很方便的各种各样的调试工具,但经管这样有时候一个疏忽的小问题,会导致各种各样的...

    Java中文社群_老王
  • jQuery日期和时间插件(jquery-ui-timepicker-addon.js)中文破解版使用

    简介 jQuery UI Datepicker日期选择插件很好用了,只不过只能精确到日,不能选择时间(小时分钟秒)很遗憾,而jquery-ui-timepick...

    Java中文社群_老王
  • Visual Studio 2010 中JS注释制作

      Visual Studio 2010中的js注释已经很强大了,但怎么才能和调用c#的方法一样容易呢?怎样才能让每个参数都有注释说明呢?底下就是想要的答案。 ...

    Java中文社群_老王
  • 如何通过行为设计实现持续改变

    看完罗胖的2019跨年演讲,屏幕前的你是不是也立下了#2020的第一个flag#,然后放进时间胶囊,期待2021年打开时间胶囊,梦想实现!哈哈!然而根据统计,在...

    黄成甲
  • 06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js。我们经常见到一些全屏的特绚丽页面,手指或者鼠标...

    老马
  • 06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js。我们经常见到一些全屏的特绚丽页面,手指或者鼠标...

    老马
  • 手把手教你在imToken上注册ENS域名

    •五位及以上长度的 .eth 域名注册,年费为5美金/年。 •四位长度的 .eth 域名注册,年费为160美金/年。 •三位长度的 .eth 域名注册,年费...

    辉哥
  • 网站被墙了应该怎么解决

     遇到网站被墙,最好立刻解决问题,因为其影响可能会波及更大范围。例如,最初可能仅仅是网站域名被墙,但是域名一直解析到某个IP的话,最终会导致整个IP被墙。而且,...

    用户5856527
  • SAP UI5 Web Component的React表格控件用法

    从@ui5/webcomponents-react导入表格组件AnalyticalTable:

    Jerry Wang
  • 如何通过远程服务器搭建网站

    首先,申明下本文所指的新人是指会上网站看网页,会自己聊QQ,会在新浪、网易等平台上写博客的人。当然你要说这个只要会上网的人都会了,是的,我所指的新人就是会上网的...

    用户2924633

扫码关注云+社区

领取腾讯云代金券