2016-07-28 140 views
1

我正在使用IIS提供的HTTP壓縮功能來gziping我的網站的靜態和動態內容。我看到gzip的內容返回到瀏覽器(Content-Encoding標頭的響應顯示爲gzip)。我的所有應用程序池都使用網絡服務標識,並且已將壓縮文件夾(D:\壓縮)的完全控制權限授予網絡服務。我已經在配置編輯器=> system.webServer => httpCompression位置處將staticCompressionIgnoreHitFrequency設置爲True。缺少HTTP壓縮文件

問題是我看到在壓縮文件夾下創建的文件夾,但沒有文件裏面的文件。

+0

使用FREB找出爲什麼靜態壓縮不能按預期工作,請參閱[我的答案](http://stackoverflow.com/questions/38638490/gzip-not-working-server-2012-iis-8/38639574 #38639574) –

+0

謝謝@PeterHahndorf。我提到失敗的請求日誌,發現原因是NO_MATCHING_CONTENT_TYPE。不知道,爲什麼我得到它。我已經在applicationHost.config文件的靜態和動態部分啓用了'text/*'mime類型。爲了測試,我啓用了'*/*',但仍然出現這個錯誤。進行這些更改後,我重新啓動了IIS。 –

+0

對不起@PeterHahndorf。忘了提及我正在訪問一個aspx頁面,所以這不應該是任何問題,因爲它將返回給客戶端時將text/html作爲mime類型。 –

回答

0

我想你看到的是預期的行爲。

system.webServer\httpCompression\directory中的壓縮文件只存在於壓縮的靜態文件中,由StaticCompressionModule壓縮並通常由StaticFileModule處理。

由應用程序框架(如asp.NET)處理的任何請求都不由StaticCompressionModule按設計進行處理。它們可能由DynamicCompressionModule處理,但該模塊不會將任何文件寫入磁盤。

你可以通過創建一個大文件test.html來測試它,點擊它幾次,一個壓縮版本將出現在temp\IIS Temporary Compressed Files中,現在製作一個名稱爲test.aspx的文件的副本,擊中那個,它將不會被壓縮。

靜態壓縮僅適用於靜態文件不會有太大變化,因此在磁盤上擁有動態頁面的壓縮版本是沒有意義的,因爲期望內容變化非常頻繁。

+0

非常感謝@Peter Hahndorf。我錯誤地認爲它會在system.webServer \ httpCompression \目錄中保存靜態和動態gzip內容。我嘗試投票答覆,但聲譽較低。 –