在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(太贵)。
干杯, 马丁
答案 0 :(得分: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
有关详细信息,请参阅上面的文档链接。请注意,静态和动态内容可以有不同的缓存策略等。如果您继续使用它,请跟进具体问题 - 如果您正在寻找细粒度控制,那么这可能是一个小问题。 / p>