[英]JSON webservice response compression in IIS 7
我在JSON響應壓縮方面遇到麻煩。 將網站上傳到生產服務器(Windows 2008,IIS 7)后,我查看響應標頭,發現未壓縮的響應。 在IIS控制面板中啟用“啟用靜態壓縮”和“啟用動態壓縮”無效。ASPX頁面已被壓縮,但是webservice響應未壓縮。
我看了看Google,但沒有找到關於此問題的答案。 另外,我嘗試了這種json ihttpmodule壓縮方式(並將此模塊添加到web.config中)-但是該源代碼非常適合在具有ASP.NET開發服務器的開發機上工作(並且響應大小減小了7倍),而在IIS7上完全被忽略了。
如何將gzip壓縮應用於來自Web服務的json響應? 謝謝。
PS .NET 3.5
我偶然發現了與JsonCompressionModule相同的問題。 它只能在開發服務器上運行,而不能在IIS 7上運行。我發現,在IIS 7下,僅在system.web和system.webServer下添加句柄是不夠的(請參見下文)。 進行此更改后,它可以在IIS 7上正常工作。
<system.web>
<httpModules>
<add name="JsonCompressionModule" type="JsonCompressionModule"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="JsonCompressionModule" preCondition="managedHandler" type="JsonCompressionModule"/>
</modules>
</system.webServer>
IIS動態壓縮使用響應內容類型標頭來確定是否應壓縮內容。 默認設置不壓縮“ application / json”。 您可以在http://www.iis.net/configreference/system.webserver/httpcompression中找到更多信息。
要添加它,請打開一個管理命令提示符,運行以下命令,然后重新啟動IIS服務。
cd \Windows\System32\inetsrv
appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json',enabled='True']" /commit:apphost
您可能需要添加其他一些內容類型。 默認動態設置壓縮的唯一application / *類型是application / x-javascript。
請嘗試檢查客戶端發送的請求標頭是什么。 Accept-Encoding應該具有gzip或deflate值。 確保客戶端能夠解壓縮JSON。 Helicon Ape( http://www.helicontech.com/ape/ )是一種可以一起設置Accept-Encoding和執行GZIP壓縮的解決方案。 以下配置將完成這兩個技巧:
# Manually set required request header
RequestHeader append Accept-Encoding gzip early
# Enable high-level (9) comression for JSON files
SetEnvIf mime application/json gzip=9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.