我最近試圖將WebMarkupMin,一個運行時html縮小庫,整合到我的網站(C#,IIS 8,MVC 4)中。我們啓用了IIS壓縮。我發現IIS實際上壓縮了動作過濾器輸出流,這意味着當我嘗試在動作過濾器中縮小我的html時,我試圖縮小已壓縮的內容。在運行時過程的哪一點IIS壓縮輸出?
問題:在運行時過程的什麼時候IIS壓縮輸出?有沒有辦法使用mvc動作過濾器修改html ouptut而不禁用IIS壓縮?
我最近試圖將WebMarkupMin,一個運行時html縮小庫,整合到我的網站(C#,IIS 8,MVC 4)中。我們啓用了IIS壓縮。我發現IIS實際上壓縮了動作過濾器輸出流,這意味着當我嘗試在動作過濾器中縮小我的html時,我試圖縮小已壓縮的內容。在運行時過程的哪一點IIS壓縮輸出?
問題:在運行時過程的什麼時候IIS壓縮輸出?有沒有辦法使用mvc動作過濾器修改html ouptut而不禁用IIS壓縮?
ASP.NET MVC輸出的IIS動態壓縮在管道中運行得相當晚。在我的測試中,它是349個管道項目中的第315個,並且在所有的asp.net模塊運行之後。
要查看IIS管道中已執行模塊的順序,請爲您的站點設置失敗請求跟蹤(FREB)並查看日誌。
我會說你的MVC行動過濾器沒有辦法告訴壓縮模塊不壓縮。
但你可以在網址的基礎上把壓縮關閉:
在你的web配置使用這樣的:
<location path="my/long/route/">
<system.webServer>
<urlCompression doDynamicCompression="false" />
</system.webServer>
</location>
你告訴IIS關閉動態壓縮只是URL。
有必要分配到dynamicCompressionBeforeCache
屬性的值等於false
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
…
<system.webServer>
…
<httpCompression …>
…
</httpCompression>
<urlCompression … dynamicCompressionBeforeCache="false" />
…
</system.webServer>
…
</configuration>