2009-09-21 78 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 

参见文档链接上面的更多细节。注意,静态和动态内容可以有不同的缓存策略等。如果你追求使用这个,跟进具体问题 - 如果你正在寻找细粒度的控制,这可能是一件小事。