如何在C#程序中压缩js文件

leehuian 2016-06-28 03:24:50
现在有一个需求,简单的概括一下,就是给定一个js文件的路径,然后我要在程序中对这个js文件进行压缩,
eg:

public void JsCompressor(string a.js,string a.min.js)
{
//压缩文件a,js
//在指定目录生成a.min.js
}


找了很多资料,很多都是用命令行进行压缩的,或者是一个组件自动全部压缩,可是怎么在程序中压缩,没有很好的例子,跪求
...全文
376 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
leehuian 2016-07-01
  • 打赏
  • 举报
回复
感谢楼上两位的解答,我是想根据请求路径,解析出来请求文件,然后把请求文件压缩合并之后,返回给客户端,这个问题当时主要是没有合适的压缩文件的算法或者是dll文件,不过后来使用了YaHoo.YUICompressor.NET .然后解决了. 感谢!
  • 打赏
  • 举报
回复
另外事实上,所谓“找了很多资料,很多都是用命令行进行压缩的,或者是一个组件自动全部压缩”,这说明你也应该可以编程调用这些命令行或者组件的东西。 压缩 js 文件的方法有很多种。关键是并行执行,而不要顺序执行(包括调用服务器上本地的命令行的程序也不得不如此)。这样去编程才能真正解决性能问题。
  • 打赏
  • 举报
回复
我只是给你一个例子,类似的网站有起码几十个,你可以“分散到各个网站”去同时并发处理几百个文件,平均处理上百个文件也不过只用1、2秒钟。你还可以花钱去买这些网站使用的系统,安装到自己的服务器集群中。总之,我给你的是一个联网解决方案(包括访问自己的服务器),难道你只想单机桌面应用?
leehuian 2016-06-28
  • 打赏
  • 举报
回复
引用 6 楼 shingoscar 的回复:
[quote=引用 4 楼 leehuian 的回复:] 这个方法确实很好,不过因为我要用在一个大型系统里面,访问量比较大,并且,也不允许使用这种方法.如果是我自己的小网站,这种方法100分.
访问量大那为什么不事先压缩好?[/quote] 这个就是操蛋的地方了.刚开始做了一个方案,预压缩js文件,结果给毙了,说是这样子测试人员也要安装压缩程序,,这样子太麻烦.最好就是请求的时候,请求什么文件,组合压缩什么文件,之后的请求就不再进行压缩.
Poopaye 2016-06-28
  • 打赏
  • 举报
回复
引用 4 楼 leehuian 的回复:
这个方法确实很好,不过因为我要用在一个大型系统里面,访问量比较大,并且,也不允许使用这种方法.如果是我自己的小网站,这种方法100分.
访问量大那为什么不事先压缩好?
Poopaye 2016-06-28
  • 打赏
  • 举报
回复
引用 2 楼 leehuian 的回复:
[quote=引用 1 楼 shingoscar 的回复:] 不就是吧换行和空格删掉就行了么
可以这么理解,把空格,什么的能删除的都删除,关键是算法,[/quote] 删掉就行了,要什么算法? public string JsCompressor(string js) { return js.Replace("\n", "").Replace(" ", "").Replace("\t", ""); }
leehuian 2016-06-28
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
可以使用互联网上的网站来压缩。有很多提供此类功能的网站。给你随便选一个:
public static string CompactJavascript(string jsSourceCode)
{
    var url = "http://tool.css-js.com/!java/?type=js&munge=true&preserveAllSemiColons=false&disableOptimizations=false";
    var web = (HttpWebRequest)WebRequest.Create(url);
    web.Method = "POST";
    web.Host = "tool.css-js.com";
    web.Accept = "text/plain";
    web.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36";
    web.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
    web.Headers.Add("Accept-Language", "zh-CN,zh");
    var content = string.Format("code={0}", HttpUtility.UrlEncode(jsSourceCode));
    var data = Encoding.UTF8.GetBytes(content);
    using (var rq = web.GetRequestStream())
        rq.Write(data, 0, data.Length);
    using (var rs = web.GetResponse())
    using (var rd = rs.GetResponseStream())
    using (var rm = new StreamReader(rd))
    {
        var s = rm.ReadToEnd();
        return s;
    }
}
这个方法确实很好,不过因为我要用在一个大型系统里面,访问量比较大,并且,也不允许使用这种方法.如果是我自己的小网站,这种方法100分.
  • 打赏
  • 举报
回复
可以使用互联网上的网站来压缩。有很多提供此类功能的网站。给你随便选一个:
public static string CompactJavascript(string jsSourceCode)
{
    var url = "http://tool.css-js.com/!java/?type=js&munge=true&preserveAllSemiColons=false&disableOptimizations=false";
    var web = (HttpWebRequest)WebRequest.Create(url);
    web.Method = "POST";
    web.Host = "tool.css-js.com";
    web.Accept = "text/plain";
    web.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36";
    web.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
    web.Headers.Add("Accept-Language", "zh-CN,zh");
    var content = string.Format("code={0}", HttpUtility.UrlEncode(jsSourceCode));
    var data = Encoding.UTF8.GetBytes(content);
    using (var rq = web.GetRequestStream())
        rq.Write(data, 0, data.Length);
    using (var rs = web.GetResponse())
    using (var rd = rs.GetResponseStream())
    using (var rm = new StreamReader(rd))
    {
        var s = rm.ReadToEnd();
        return s;
    }
}
leehuian 2016-06-28
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
不就是吧换行和空格删掉就行了么
可以这么理解,把空格,什么的能删除的都删除,关键是算法,
Poopaye 2016-06-28
  • 打赏
  • 举报
回复
不就是吧换行和空格删掉就行了么

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧