使 HTTP 压缩(GZip)与 IIS 6 上的 URL 路由配合使用

使 HTTP 压缩(GZip)与 IIS 6 上的 URL 路由配合使用

我还没有看到任何专门针对这一特定问题的问题。

当使用 URL 路由时,请求进入 IIS,然后路由到 Aspx 页面。例如,网站:www.site.com/products 可能会将请求路由到 wwwroot/inetpub/mysite/pages/productsPage.aspx

需要注意的是,该页面是 ROUTED,而不是 ReDirected。

请注意,为了使 URL 在 IIS 6 中正常工作,通配符扩展必须设置将所有资源路由到 Asp.Net(然后 Asp.Net 将把静态资源交还)这在此处记录: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

看起来 IIS 在发回内容时不会对其进行 GZip。我已按照此处的说明进行操作: http://www.kavinda.net/2007/02/17/how-to-enable-http-compression-iis6.html

启用 IIS 6 压缩。

知道为什么 Http Compression 似乎不起作用吗?它似乎在我的服务器上的其他网站上运行良好。只有 URL Routing 不起作用

答案1

使用类似方法让你的 ASP.NET 应用程序使用 gzip 压缩其输出本身这个

答案2

最好的办法是使用Http压缩作者:Bel Lowery。这是一个简单、免费且开源的 HttpModule,用于处理页面的 HTTP 压缩。您可以将其与 IIS Http Compression 选项结合使用。

我将 HttpCompress 与 Vici MVC 结合使用,效果非常顺畅!

我已经在网上搜索了几个小时,要么使用 HttpCompress,要么购买商业项目(Port80 软件有一个解决方案),要么编写我自己的 HttpModule。

PS:IIS 根据文件扩展名进行 HTTP 压缩。这就是它不适用于使用 URL 路由的网站的原因。

答案3

你尝试过这个方法吗? MS KB322603

要使 IIS 5.0 能够压缩 .aspx 页,请按照下列步骤操作:

  1. 打开命令提示符。
  2. 键入 net stop iisadmin,然后按 ENTER。
  3. 键入 cd C:\InetPub\adminscripts,然后按 ENTER。
  4. 键入以下内容,然后按 ENTER:CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions“asp”“dll”“exe”“aspx”
  5. 键入以下内容,然后按 ENTER:CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions“asp”“dll”“exe”“aspx”
  6. 键入 net start w3svc,然后按 ENTER。

答案4

很抱歉讨论得这么晚,但由于我(仍然)必须在 MVC 网站上启用 IIS 6 压缩,因此我找到了一个 IIS 6 本机解决方案:包含在压缩扩展中axd。这假设您已正确启用 .Net Framework 4 中对 IIS 6 扩展较少 URL 的支持。

我已经直接在 IIS Metabase 中完成了此操作。(如前所述)这里%windir%\systems32\inetsrv\metabase.xml。编辑前请先停止IIS或在IIS中启用“metabase热编辑”,然后进行备份。)

从我的配置中提取:

<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
    HcCreateFlags="0"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
        html
        txt
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</IIsCompressionScheme>
<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
        html
        txt
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</IIsCompressionScheme>
<IIsCompressionSchemes  Location ="/LM/W3SVC/Filters/Compression/Parameters"
    HcCacheControlHeader="max-age=86400"
    HcCompressionBufferSize="8192"
    HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
    HcDoDiskSpaceLimiting="TRUE"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
    HcFilesDeletedPerDiskFree="256"
    HcIoBufferSize="8192"
    HcMaxDiskSpaceUsage="99614720"
    HcMaxQueueLength="1000"
    HcMinFileSizeForComp="1"
    HcNoCompressionForHttp10="FALSE"
    HcNoCompressionForProxies="FALSE"
    HcNoCompressionForRange="FALSE"
    HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>

合理性:在 IIS 6 中,无扩展 URL 可以通过调用页面来实现eurl.axd。请参阅此内容博客以获得有关使用 fx4 的 IIS6 中无扩展 URL 的更深入解释。

相关内容