3

一段时间以来,我一直在尝试在我的一些网站上实现 HTTP 压缩。

我尝试使用以下两种技术的变体来实现 HTTP 压缩:

来自 Global.asax 中的 Application_BeginRequest

从自定义 HttpModule

在这两种情况下,它最初似乎都有效。但是,当我浏览网站时,我很快就失去了我的 CSS 样式。并且浏览器报告一个 JS 文件包含无效字符。而且,在某些时候,整个网站完全变成了垃圾。

我当然希望我知道这里发生了什么。有人有什么建议吗?是因为这些技术只适用于旧版本的 ASP.NET/IIS?

编辑:我无权访问 IIS,也不应该要求它。随着 ASP.NET 和 IIS 的最新迭代,越来越多的控制权被赋予 web.config 而无需触及 IIS。这应该在不深入研究 IIS 的情况下得到完全支持,事实上,上面的两个链接声称他们能够做到这一点。我只是无法让它为我工作。

编辑:在进一步检查中,使用上面第二个链接中的代码(HTTP 模块),我可以看到模块处理程序正在为我的站点上的所有文件类型调用。这显然是问题的一部分。(请注意,在某些情况下,整个页面都会变成垃圾,这表明存在其他问题。)任何人都可以提出什么决定哪些文件被发送到 HTTP 处理程序,或者为什么该链接上的代码可能对其他人有效,但对我无效?

4

2 回答 2

3

IIS 7 原生支持压缩- 不需要任何编码。除非您尝试在未启用它的托管服务提供商上实施它,但您的问题中并没有明确说明

于 2011-02-13T21:48:53.587 回答
1

虽然我可能在这里遇到了一些问题,但演练中的以下引用:创建和注册自定义 HTTP 模块似乎说明了这个问题:

如果 ASP.NET 应用程序在 IIS 6.0 下运行,您可以使用 HTTP 模块来自定义对 ASP.NET 所服务的资源的请求。这包括 ASP.NET 网页(.aspx 文件)、Web 服务(.asmx 文件)、ASP.NET 处理程序(.ashx 文件)以及您已映射到 ASP.NET 的任何文件类型。如果 ASP.NET 应用程序在 IIS 7.0 下运行,您可以使用 HTTP 模块自定义对 IIS 提供的任何资源的请求。这不仅包括 ASP.NET 资源,还包括 HTML 文件(.htm 或 .html 文件)、图形文件等。

正如我开始怀疑的那样,这是 ASP.NET 4.0 和 IIS7 中的一个变化。正如我多次提到的,这些正在变得越来越集成。上面的引用表明 HTTP 模块现在可以处理 IIS 提供的所有文件类型。

这就是为什么旧代码对我不起作用的原因。修复似乎是从我的处理程序中简单地检查文件类型类型。

于 2011-02-15T00:57:14.547 回答