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:

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.html

原文地址:https://www.cnblogs.com/hedianzhan/p/9461395.html

时间: 2024-09-29 10:28:15

Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css的相关文章

.net 运用YUI相关的dll压缩js (按照自己的规则,想想都觉得强大和有趣)

写在前面 不管是做前端的还是做后台的,不管是懂javaScript的还是不太懂JavaScript的人,我想都或多或想的知道些许js压缩对于页面性能提升的效应吧. 之前老喜欢用在线压缩工具去压缩js,其实想想之前的这个做法就有些不寒而栗,假设一下,如果一个项目中的js有50个的话,你要去用在线压缩工具压缩js50次吗?仅仅发布一次就压缩50次,那是不是每个发布项目的时候都要去做这个工作,这是多么重复而双乏味的事情. 再假设,不同页面上引用了相同的n个js,如果我们只是按照单独的js去压缩的话,那

maven 配置合并压缩JS+CSS

1 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 2 <modelV

ASP.NET MVC 4使用Bundle的打包压缩JS/CSS

打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS文件案中空白.批注及修改JavaScript内部函数.变量名称的压缩手法,能有效缩小文件案体积,提高传输效率,提供使用者更流畅的浏览体验. 在ASP.NET MVC 4中可以使用BundleTable捆绑多个css文件和js文件,以提高网络加载速度和页面解析速度.更为重要的是通过捆绑可以解决IE浏览

压缩 js/css 的工具

最近检测服务器,发现js/css文件都没有压缩过,动手解决此问题先. 本次压缩采用 yui compress (2.4.8) 压缩脚本: #!/bin/sh echo "###########################" echo "---------------------------" echo "begin to compress JS file." for file in `find . -name "*.js"

node压缩js/css/image

1.安装nodejs http://nodejs.org/ 2.安装各自的node package js我用的是UglifyJS github地址:https://github.com/mishoo/UglifyJS css我用的是clean-css github地址:https://github.com/GoalSmashers/clean-css 图片用的是node-smushit    github地址:https://github.com/colorhook/node-smushit 3

ASP.NET MVC使用Bundle来打包压缩js和css

Bundle它是用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原始方式显示出来,以方便查找问题. 1.BundleConfig配置Bundle public class BundleConfig { // 有关绑定的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=301862 public static void RegisterBundles(BundleCollection bundl

IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]

IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最通用的设置GZip压缩就完成了. 静态内容压缩和动态内容压缩的区别静态内容压缩:压缩的静态响应可以缓存到磁盘上,供多个请求使用,同时不会降低 CPU 资源的性能.对于下一个请求,可以从磁盘检索压缩文件,由于 CPU 不必再次压缩文件,从而提高了性能. 动态内容压缩:压缩动态应用程序响应会影响 CPU

【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS

在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩呢? 有两种办法: 第一种,在css.js请求到来的时候读取一下相对应的文件,进行压缩后返回.此方法可以通过在Global.asax的Application_BeginRequest的事件中,进行处理,也可以在web.config中注册一个httpHandler进行处理. 第二种是在程序启动的时候,

C#Css/Js静态文件压缩--Yui.Compressor.Net

一.Asp.Net 自带静态文件压缩工具包 Microsoft.AspNet.Web.Optimization http://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization/1.1.3 但好像没有提供可直接条用的压缩方法,并且再用mvc4.0的时候,同一个网站多个域名也出现了一些问题.于是有了下面 二.使用Yahoo for .Net 的压缩工具,Nuget包名称:YUICompressor.NET Yahoo.Yui.Compr