IIS6 中的 ASP.NET MVC 压缩选项

发布于 2024-07-14 15:53:19 字数 490 浏览 4 评论 0原文

目前我仍坚持使用 IIS6 for ASP.NET-MVC(如我还无法升级到 Server 2008)。 它似乎不知道我的 RESTful URL 是动态文件并且没有压缩它们。

我所有旧的 .aspx 文件都被压缩(如 Fiddler 中所示),但 '/products/1001' 类型的 URL 未被压缩。

有没有办法让 IIS6 压缩 IIS6 中的 ActionResults,而不使用 用于压缩的 ActionFilter

我假设 IIS7 足够聪明,知道它们是动态的,对吧。

如果您能告诉我 IIS6 是如何知道哪些文件是动态的,那就加分了!

For now I'm stuck with IIS6 for ASP.NET-MVC (as in I cant upgrade to Server 2008 yet). It doesnt seem to know that my RESTful URLS are dynamic files and isn't compressing them.

All my old .aspx files are compressed (as seen in Fiddler), but not the '/products/1001' type URLS.

Is there any way to get IIS6 to compress my ActionResults in IIS6 without using something like an ActionFilter for compression.

I'm assuming IIS7 is clever enough to know they're dynamic right.

Bonus points if you can tell me how IIS6 even knows which files are dynamic in the first place!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情独悲 2024-07-21 15:53:19

由于从 1.0 版本开始,ASP.NET 的 HTTP 压缩通常是使用 HttpModule 实现的,并且 HttpModule 仍然属于 MVC 框架使用的 ASP.NET 请求管道,因此您仍然可以使用 HttpModule 来注入 GZIP 或 deflate 响应过滤器。

在这里你可以找到一个非常好的、开源的、准备发布的实现:
Ben Lowery 的 HttpCompress(下载地址:Google 代码

您只需添加对 DLL 的引用,并在 web.config 中添加几行即可。 它已经处理了非常奇特和罕见的情况和例外。 您可以向 web.config 添加排除项,不是基于文件扩展名(如 IIS6),而是基于 MIME 类型,这可能正是您所需要的。

我应该补充一点,我实际上已经使用这个库在 IIS6 上运行了 ASP.NET MVC 网站,因此我可以确认这在实践中是有效的。

As HTTP compression for ASP.NET usually has been implemented using HttpModules since version 1.0, and HttpModules still belong to the ASP.NET request pipeline used by the MVC framework, you can still use a HttpModule to inject a GZIP or deflate response filter.

Here you can find a very nice, open-source, ready to ship implementation:
HttpCompress by Ben Lowery (download at Google Code)

You just have to add a reference to the DLL, and add a few lines to your web.config. It already handles very exotic and rare cases and exceptions. You can add exclusions to your web.config, not based on file extensions (like in IIS6), but on mime type, which is probably exactly what you need.

I should add that I have actually running a ASP.NET MVC website on IIS6 using this library, so I can confirm that this works in practice.

终陌 2024-07-21 15:53:19

在 Web 配置中,您应该注册 StaticFileHandler 和 HTTP 模块

<add verb="GET,HEAD,POST" path="*" type="[Web.Front.Modules].StaticFileHandler"/>
<add name="HttpCompressionModule" type="[Web.Front.Modules].HttpCompressionModule"/>

源代码,您将找到 此处

但不要忘记在 IIS 上打开压缩

In a web config you should register StaticFileHandler and HTTP Module

<add verb="GET,HEAD,POST" path="*" type="[Web.Front.Modules].StaticFileHandler"/>
<add name="HttpCompressionModule" type="[Web.Front.Modules].HttpCompressionModule"/>

Source code you will find here

But do not forget to turn on compression on IIS

向日葵 2024-07-21 15:53:19

这里有一个选项似乎对我使用通配符映射和无扩展 url 的 MVC 和 IIS 6 有效:

  1. 使用管理工具全局设置动态和静态压缩,
  2. 编辑metabase.xml,使 HcScriptFileExtensions 在 CompressionSchemes 中为空白。 这将尝试压缩所有内容(包括 jpg 和 gif)。
  3. 使用 DoDynamicCompression = "false" 属性关闭文件夹级别的动态压缩。 这假设您的所有静态内容都是一个目录。
  4. 在 HcFileExtensions 属性中添加您想要压缩的静态文件扩展名(css、js 等)。

这是一种解决方法,但我目前仍坚持使用 Server 2003 和 IIS 6。

Here's one option that seems to be working for me with MVC and IIS 6 using wildcard mappings and extensionless urls:

  1. set dynamic and static compression globally using the admin tool
  2. edit the metabase.xml so that HcScriptFileExtensions is blank in the CompressionSchemes. This will try to compress everything (including jpgs and gifs).
  3. Turn off dynamic compression at the folder level using the DoDynamicCompression = "false" property. This assumes all your static content is one directory.
  4. Add the static file extensions you do want compressed (css, js, etc) in the HcFileExtensions property.

This is a workaround, but I'm stuck with Server 2003 and IIS 6 for the moment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文