簡體   English   中英

IIS 7中的JSON Web服務響應壓縮

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM