1

在 Unix 上,我通常在我的应用程序服务器前面的 Varnish 前面部署 nginx。nginx 和 Varnish 都在这里充当反向代理。Varnish 维护一个缓存并支持诸如 If-Modified-Since、Cache-Control 响应头和来自应用程序的 PURGE 请求之类的东西。nginx擅长接收大量的连接。我还用它来提供一些静态内容,启用 gzip 压缩等。

在 Windows 上,我可以在 IIS 前使用 Squid 进行管理。我计划将我的 (Python) 应用程序部署为 ISAPI 通配符过滤器(使用 isapi-wsgi 包),因此该应用程序将存在于由 IIS 管理的线程池中。

但是,Windows 上的 Squid 开发似乎已经停滞,我更愿意将 IIS 保留在端口 80 上,这样我就可以直接从磁盘提供某些东西。我还怀疑 IIS 在处理大量连接方面比 Windows 上的 Squid 更有弹性。

人们通常在这里使用什么?一种选择是在 IIS 前使用另一个独立的缓存代理。另一个选项可能是作为 ISAPI 过滤器安装的东西,它会拦截请求并响应诸如 If-Modified-Since、对图像和其他缓存资源的请求以及来自应用程序的 PURGE 请求。

这样的事情存在吗?或者是唯一真正的选择 Squid 和 MS ISA(太贵了)。

干杯,马丁

4

1 回答 1

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 

有关更多详细信息,请参阅上面的文档链接。请注意,静态和动态内容可以有不同的缓存策略等。如果您追求使用它,请跟进具体问题——如果您正在寻找细粒度的控制,将所有内容排列起来可能有点技巧。

于 2012-08-31T16:03:16.160 回答