2009-09-21 81 views
1

在Unix上,我通常在我的應用程序服務器前部署Varnish前面的nginx。 nginx和Varnish在這裏都起到反向代理的作用。 Varnish維護緩存並支持來自應用程序的If-Modified-Since,Cache-Control響應頭和PURGE請求等內容。 nginx擅長接收大量連接。我也用它來提供一些靜態內容,啓用gzip壓縮等。具有PURGE支持的IIS緩存

在Windows上,我可以在IIS前面使用Squid進行管理。我打算將我的(Python)應用程序部署爲ISAPI通配符篩選器(使用isapi-wsgi包),因此應用程序將位於由IIS管理的線程池中。但是,Windows上的Squid開發似乎停滯不前,而且我更願意將IIS保留在端口80上,以便我可以直接從磁盤提供某些東西。我還懷疑IIS在處理大量連接方面比在Windows上使用Squid更有彈性。

人們通常在這裏使用什麼?一種選擇是在IIS之前使用另一個獨立緩存代理。另一種選擇可能是作爲ISAPI過濾器安裝的東西,它可以攔截請求並響應諸如If-Modified-Since,圖像和其他緩存資源的請求以及來自應用程序的PURGE請求等內容。

這樣的事情是否存在?或者是唯一真正的選擇Squid和MS ISA(太昂貴)。

乾杯, 馬丁

回答

0

IIS7與應用程序請求路由(見http://www.iis.net/download/ApplicationRequestRouting)支持在同一個盒子或在你的中間層前的緩存服務器的完全代理緩存。

一旦安裝ARR,從命令線使能代理緩存運行以下:

%windir%\System32\inetsrv\appcmd.exe set config -section:system.webServer/diskCache /+"[path='C:\MyCacheFolder',maxUsage='0']" /commit:apphost 

要基於查詢串變化緩存,執行以下:

%windir%\System32\inetsrv\appcmd.exe set config -section:system.webServer/proxy /cache.queryStringHandling:"Accept" /commit:apphost 

參見文檔鏈接上面的更多細節。注意,靜態和動態內容可以有不同的緩存策略等。如果你追求使用這個,跟進具體問題 - 如果你正在尋找細粒度的控制,這可能是一件小事。