使用GZIP在DLL中嵌入ASP.NET JavaScript文件

时间:2010-04-16 12:29:05

标签: asp.net javascript gzip

我们将几个相当大的JavaScript文件嵌入到单个脚本资源DLL中。然后,通过引用将多个项目使用,并通过ASP.NET脚本管理器包含页面。这样可以在我们的ASP.NET页面中保持良好和整洁,并且只需要很少的工作就可以集成到新项目中。

问题是这些脚本文件中的一些文件非常大(大约100KB)并且需要时间下载。通过在嵌入之前对它们进行minify运行,这会减少很多(大约70KB),但还不够。我们想要做的是在嵌入之前对文件进行GZIP。但是,只是压缩文件会导致语法错误,因为内容未解压缩。嵌入资源时,在AssemblyInfo中应用了内容类型“text / javascript”,但我们找不到指定内容编码的方法。

有没有办法让这项工作无需编写httpmodule / handler(这意味着更改所有消费项目的配置)?

1 个答案:

答案 0 :(得分:0)

好吧,从许多不同的尝试看,没有答案和大量的Google搜索,HttpModule是解决这个问题的唯一方法。为了使这个易于配置,我在同一个包含脚本文件的dll中设置了一个HttpModule,如下所示。

简化的DLL结构

  • \ ScriptMinified \ * .js [Embedded Resource](仅限缩小版)
  • \ ScriptCompressed \ * .gz [Embedded Resource](Gzipped and Minified)
  • \ ScriptDebug \ * .js [嵌入式资源](原始未压缩和评论)
  • MyScriptManager.cs
  • MyHttpModule.cs

唯一的附加工作是消费者的Web配置中的条目以启用该模块。另外,我在MyScriptManager中进行了初始化调用,包括脚本标记,检测新http模块的存在/模式,并根据需要提供gziped,debug或minimal版本。这意味着我们不必重新编码或配置任何旧项目,因此可以实现相同的结果。