我有一個託管在Microsoft Azure上的MVC 5應用程序(C#)。該應用程序將一些相當大的JSON文檔從服務器返回給客戶端。有誰知道如何打開HTTP壓縮,以便這些文檔被壓縮到客戶端?我已經使用谷歌搜索,但我找不到至少有3-4歲的任何東西。如何啓用HTTP壓縮來壓縮JSON文件
我想一個替代方案是使用壓縮工具壓縮JSON文檔。我試過LZ-String,但我似乎無法使用C#版本壓縮服務器上的文檔,並使用JavaScript版本在客戶端解壓縮,並且生成的JSON文檔被識別。
我有一個託管在Microsoft Azure上的MVC 5應用程序(C#)。該應用程序將一些相當大的JSON文檔從服務器返回給客戶端。有誰知道如何打開HTTP壓縮,以便這些文檔被壓縮到客戶端?我已經使用谷歌搜索,但我找不到至少有3-4歲的任何東西。如何啓用HTTP壓縮來壓縮JSON文件
我想一個替代方案是使用壓縮工具壓縮JSON文檔。我試過LZ-String,但我似乎無法使用C#版本壓縮服務器上的文檔,並使用JavaScript版本在客戶端解壓縮,並且生成的JSON文檔被識別。
爲了使你的MVC控制器的行動JsonResult
壓縮需要從web.config
文件中啓用動態壓縮:
<system.webServer>
<urlCompression doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
</staticTypes>
</httpCompression>
</system.webServer>
的工作有確切上面的配置實例在Azure網站免費梯隊發佈,可以測試用簡單的HTTP GET請求:
GET https://double.azurewebsites.net/Home/SomeJson HTTP/1.1
User-Agent: Fiddler
Accept-Encoding: gzip, compress
Host: double.azurewebsites.net
。注意,Accept-Encoding
頭是絕對必要的,以觸發服務器側壓縮。還請注意mime類型application/json; charset=utf-8
,它是由ASP.NET MVC5 JsonResult提供的mime類型。
這看起來不錯。這與Web API中的內容協商有什麼關係? Accept頭是通常決定返回的東西。另外,瀏覽器是否自動解壓JSON?所有瀏覽器? – JasonCoder 2014-09-05 14:37:04
偉大的問題。我需要讓所有主流瀏覽器自動對此進行解壓縮,否則我無法使用它。 – 2014-09-05 16:29:07
蘭迪閔,我們在21世紀。所有(主要)瀏覽器都不支持壓縮。這是配置的問題,使瀏覽器能夠發送這個標題。而且你並不想總是發送壓縮的內容 - 只是爲了客戶端無法解壓縮的情況。這些被稱爲網絡標準。稍微檢查一下網頁,然後在發佈諷刺評論之前對accept-encoding標題做一個小的研究!當然,無論請求標題如何,都有辦法壓縮響應 - 正是當你想要符合標準時。只是搜索互聯網... – astaykov 2014-09-06 07:10:22
請看下面的鏈接。 http://stackoverflow.com/questions/2775261/how-to-enable-gzip-http-compression-on-windows-azure-dynamic-content – edokan 2014-09-05 12:55:26
謝謝,但問題已超過4歲,我沒有使用網絡角色。 – 2014-09-05 13:11:07
所以,在你的問題你說什麼服務你在使用?從您的評論看來,這是Azure網站。有了您的聲譽,您應該知道,提到描述您的問題的確切配置是相當重要的......我相信這篇文章將有助於您:http://azure.microsoft.com/blog/2014/01/28/more -to-explore-configuration-options-unlocked-in-windows-azure-web-sites/ – astaykov 2014-09-05 13:39:02