0

场景:我有一个复杂的 Asp.net 应用程序,通过 HttpModules 中以编程方式构造的控件集合为各种单元提供服务。其中一些控件使用 Asp.NET Ajax。

在许多不同的单元中,ScriptResource.axd 的平均传输大小约为 27k。

我的天花板只允许〜3k。

绝对没有时间用 jQuery 或手动 js 函数或诸如此类的东西来改造所有的 Ajax 功能。我们已经有了带有 gzip 编码的 .axd(未压缩它更像是 97k)。它经常被缓存,但这没关系:我必须对第一次请求的总传输大小设置一个严格的、低的、外部强加的限制……标记、脚本、图像和所有这些都总结了 a-la firebug。我一直在避免使用 .axds,但实际上没有其他地方可以减少字节数,而且我还有 24k 的空间。

有任何想法吗?我沉没了吗?

可能的方法:我还没有使用 Asp.NET 3.5 SP1 的compositescript功能,但我认为这只会节省请求/响应标头,而且我什至不确定标头是否对我不利。

除了一些激进的东西,我没有任何其他想法,比如创建一个响应过滤器,它使用反射和一些字典来确定实际需要哪些 js 函数,然后只发出这些函数。我可以缓存每个单元的结果列表,因为我的响应时间上限也很低,而且我认为 .axds 不会从一个请求更改为另一个请求。这可行吗?还有其他想法吗?...如果我为英雄买啤酒并有解决方案怎么办?

4

2 回答 2

1

反思可能是个好主意。此外,寻找很少使用的部件并找到另一种解决方法或在没有该功能的情况下进行操作。此外,尽可能多地压缩 Ajax 脚本(YUI Compressor适用于 JavaScript)。

于 2010-10-30T04:17:57.877 回答
1

我完全赞同安德鲁的评论。不过,从配置的角度来看,您应该做两件事。

Gzip(你已经完成了)脚本模式=发布(这将摆脱空白)。

除此之外,还有一个选择……那就是根本不使用 Microsoft AJAX 库。您可以选择为 Ajaxification 编写自己的库并只使用您想要的东西。仍然存在的问题是……值得痛苦吗?如果是,那就去吧。但是请记住,编写自己的库的很多痛苦并不是很难编写。真正令人头疼的是维护您编写的内容,在所有可用的平台上对其进行测试,并修复错误……重新测试……等等……你明白了!

于 2010-10-30T08:35:13.660 回答