我们将几个相当大的JavaScript文件嵌入到单个脚本资源DLL中。然后,通过引用将多个项目使用,并通过ASP.NET脚本管理器包含页面。这样可以在我们的ASP.NET页面中保持良好和整洁,并且只需要很少的工作就可以集成到新项目中。
问题是这些脚本文件中的一些文件非常大(大约100KB)并且需要时间下载。通过在嵌入之前对它们进行minify运行,这会减少很多(大约70KB),但还不够。我们想要做的是在嵌入之前对文件进行GZIP。但是,只是压缩文件会导致语法错误,因为内容未解压缩。嵌入资源时,在AssemblyInfo中应用了内容类型“text / javascript”,但我们找不到指定内容编码的方法。
有没有办法让这项工作无需编写httpmodule / handler(这意味着更改所有消费项目的配置)?
答案 0 :(得分:0)
好吧,从许多不同的尝试看,没有答案和大量的Google搜索,HttpModule是解决这个问题的唯一方法。为了使这个易于配置,我在同一个包含脚本文件的dll中设置了一个HttpModule,如下所示。
简化的DLL结构
唯一的附加工作是消费者的Web配置中的条目以启用该模块。另外,我在MyScriptManager中进行了初始化调用,包括脚本标记,检测新http模块的存在/模式,并根据需要提供gziped,debug或minimal版本。这意味着我们不必重新编码或配置任何旧项目,因此可以实现相同的结果。