2015-12-06 40 views
0

我們正在Umbraco CMS上構建負載平衡網站,並在平衡網關上使用ARR 2.5。我們試圖使用ARR磁盤緩存在網關上存儲一些「繁重」的頁面,使其成爲反向代理。ARR緩存不緩存由Umbraco構建的特定頁面CMS

問題是某些頁面沒有存儲在ARR緩存中,即使它們被條件緩存總是被ARR緩存控制規則覆蓋。 例如,我們有一條規則來總是緩存「about」 - 文件夾內的所有頁面。

這似乎是這樣的:

條件:始終

時間:60分鐘

主機名:

網址:約/ *

結果,我看到,有些頁面被緩存,但一個不是。我無法在緩存文件夾中的磁盤上看到它,並且「netsh http show CacheState」也不顯示它。我在瀏覽器中打開頁面,發現與「about」-folder中的其他頁面相比,它需要更多時間才能加載它。 緩存和未緩存頁面之間的唯一區別在於目標後端服務器返回到網關的HTTP響應標頭。

對於緩存頁面,它們看起來像這樣。

HTTP/1.1 200 OK 
Cache-Control: max-age=3600 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Server: Microsoft-IIS/8.5 
X-MiniProfiler-Ids: ["c101eed1-0a28-42ae-8428-5ac86c87dc10","969bfc9d-073c-419b-8141-447fd8a0d56c"] 
X-Powered-By: ARR/2.5 
Date: Sat, 05 Dec 2015 19:15:01 GMT 
Connection: close 
Content-Length: 34246 

對於沒有緩存的頁面,它們看起來像這樣。

HTTP/1.1 200 OK 
Cache-Control: max-age=3600 
Content-Length: 255916 
Content-Type: text/html; charset=utf-8 
Expires: Sat, 05 Dec 2015 20:11:21 GMT 
Last-Modified: Sat, 05 Dec 2015 19:11:21 GMT 
Vary: * 
Server: Microsoft-IIS/8.5 
X-MiniProfiler-Ids: ["4901b30d-6738-4918-b04b-c7aac2dbc043","480638b0-11cd-481d-8fdc-2dd1689c0b8b","342f085b-61dc-45b4-8c76-4da634bacf63"] 
X-Powered-By: ARR/2.5 
Date: Sat, 05 Dec 2015 19:11:35 GMT 
Connection: close 

唯一的區別是在「更改」,「過期」,並且其中後者具有完全相同的時間時目標後端服務器(即網關後面)響應的「上次修改」 HTTP標頭。對於頁面的每個HTTP響應,返回的時間都不相同。

HTTP標頭由Umbraco CMS/IIS生成,我們沒有配置它們發送這樣的標頭。實際上,頁面內容不會改變,但即使條件緩存總是存在,ARR緩存也不會緩存頁面。 ARR緩存控制規則被肯定命中 - 我們看到它,因爲來自「about」 - 文件夾的其他頁面被緩存。

我已經瀏覽了很多站點,試圖找到一些關於ARR如何決定緩存哪些頁面以及哪些頁面沒有緩存的問題,但沒有什麼可以說明我的問題。

請幫助我找到我的問題的解決方案。

回答

0

我設法擺脫目標後端服務器上的「Vary」HTTP標頭,並且頁面開始被緩存。