我正在使用 MbCompression 库,我想知道 - MbCompression 是否会缩小 ScriptResource.axd?是否有任何工具可以在运行时最小化 ScriptResource.axd,而对 web.config 的更改最少?
1 回答
我不熟悉 MbCompression,但请看一下RequestReduce。这是我的一个 OSS 项目,我相信它完全符合您的要求:在运行时缩小/组合 css 和 javascript。与其他框架不同,RequestReduce 不需要更改代码,不需要重新排列脚本和 css 以及非常少的配置。所有必要的配置是添加模块。这是您的配置中真正需要的一切:
<system.web>
<httpModules>
<add name="RequestReduce" type="RequestReduce.Module.RequestReduceModule, RequestReduce"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<validation validateIntegratedModeConfiguration="false"/>
<add name="RequestReduce" type="RequestReduce.Module.RequestReduceModule, RequestReduce"/>
</modules>
</system.webServer>
就是这样,没有额外的代码。您可以使用许多选项来打开和关闭各种功能,并配置跨多个服务器的缓存同步或在您的 url 中包含 CDN 主机。但是对于一个开箱即用的解决方案,上面应该是必要的。
只要满足以下条件,它将查找任何脚本 url 并将其缩小并将其与相邻的脚本标签内容合并:
- url 的 mime 类型是有效的 javascript mime 类型。所以 ScriptResources 和 WebResources 应该被捕获。
- 该 url 没有 no-cache 或 no-store 缓存控制标头。
- 该 url 没有 max-age 或 expires header 少于一周。
我听说有人抱怨 webresource.axd 或 scriptresource.axd 被发送到没有设置缓存的浏览器。这对您来说可能不是问题,但如果您看到这种情况发生并且不是故意缺少缓存,您可以将其添加到您的 web.config 中:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="180.00:00:00" cacheControlCustom="public" />
</staticContent>
此外,它可以自动生成任何背景图像,优化它们的 PNG 压缩,并在为其缓存的 css/javascript/sprites 提供缓存头时使用最佳实践。
该框架目前在 Microsoft 被 MSDN 和 Technet 画廊使用。
您可以通过Nuget(建议)安装或从http://www.requestreduce.com下载。