【发布时间】:2011-02-13 20:21:30
【问题描述】:
一段时间以来,我一直在尝试在一些网站上实施 HTTP 压缩。
我尝试使用以下两种技术的变体来实现 HTTP 压缩:
From Application_BeginRequest in Global.asax
在这两种情况下,它最初似乎都有效。但是,当我浏览网站时,我很快就失去了我的 CSS 样式。并且浏览器报告一个 JS 文件包含无效字符。而且,在某些时候,整个网站完全变成了垃圾。
我真希望我知道这里发生了什么。有人有什么建议吗?是因为这些技术只适用于旧版本的 ASP.NET/IIS?
编辑:我无权访问 IIS,因此不需要它。随着 ASP.NET 和 IIS 的最新迭代,越来越多的控制权被赋予 web.config 而无需触及 IIS。这应该在不深入研究 IIS 的情况下得到完全支持,事实上,上面的两个链接声称他们能够做到这一点。我就是无法让它为我工作。
编辑:进一步检查,使用上面第二个链接中的代码(HTTP 模块),我可以看到模块处理程序正在为我的站点上的所有文件类型调用。这显然是问题的一部分。 (请注意,在某些情况下,整个页面都会变成垃圾,这表明存在其他问题。)任何人都可以建议什么决定哪些文件被发送到 HTTP 处理程序,或者为什么该链接上的代码可能对其他人有效,但对我无效?
【问题讨论】:
-
你引用的压缩方法只适用于动态aspx代码。 CSS 和 JS 是静态文件,只能通过配置 IIS 进行压缩。这些请求通常不会由 ASP.NET 处理,除非您重新配置 IIS 以强制它们处理。
-
@Samuel:我没有做出任何影响 ASP.NET 处理哪些文件的更改。我可以告诉你更多,但坦率地说,我不知道还能去哪里看。
-
@Samuel:我今天花了一些时间试图弄清楚到底发生了什么。使用我的问题中第二个链接中的代码(创建 HTTP 模块),我可以看到正在为所有文件类型(页面、CSS、javascript 和图像)调用模块处理程序。这显然是问题的一部分。为什么它对我来说表现不同?我没有看到文章提到文件类型的地方。但是,请注意,最终整个页面似乎变成了乱码,所以我可能有不止一个问题。
-
@Jonathan Wood,使用 http 代理查看实际通过网络发送的内容。我更喜欢 Charles (charlesproxy.com) 但 Fiddler 也很好用。当你说“胡言乱语”时,你真的能说出它是什么吗?它是 gzip'd 但没有被标记为 gzip'd 并因此没有在客户端上正确解压缩吗?也许它是双压缩的?
-
@Samuel:我一直忙于其他项目,但修改了从我发布的第二个链接获得的代码,以便仅在扩展名为“。”时进行压缩。或“.aspx”。一些快速测试似乎表明这是可行的。我仍然不明白为什么要处理非 ASP.NET 页面或原始代码如何工作。 “胡言乱语”是指充满无意义字符的未格式化页面,就好像我正在查看压缩数据一样。在它起作用之前,我不愿意把它放在网上。这些代理应用程序会在本地工作吗?我会寻找什么?
标签: asp.net iis-7 asp.net-4.0 http-compression