如何删除与Squidcaching代理的瓶颈

我更喜欢试图帮助系统pipe理员的LAMP Web开发人员。 当我join一个项目时,我inheritance了一些老的PHP意大利面代码。 其中一些代码是它发送到第三方网站(我们称之为thirdparty.com),并通过HTTP-GET请求下载内容。 不幸的是,代码的devise方式,它需要每分钟做几次。 当我们使用'netstat -a'来查看服务器上的瓶颈时,我们发现与thirdparty.com的连接一直在运行,当这些内容每天都会被收集到一个很好的状态。

我需要知道的是,如果Squid代理caching服务器是我们需要的解决scheme? 我猜这可能让我们假装在networking上thirdparty.com。 如果Web服务器需要查询thirdparty.com,则它会碰到squid。 然后,Squid可以确定是否需要从caching提供内容,或者是否需要到thirdparty.com获取新内容。

这是我们需要的解决scheme吗? 其次,这是很容易configuration,只cachingthirdparty.com请求?

鱿鱼会为此而工作,是的。

唯一棘手的部分可能是说服Squidcachingthirdparty.com,如果其响应不能根据其头部caching。

如果是这种情况,请查看Squid中的refresh_patternconfiguration指令; 特别是选项。

http://www.squid-cache.org/Doc/config/refresh_pattern/

我的大部分评论都集中在假设内容是根据您的描述在后端进行轮询。

该代码需要更改。 这是一个可怕的架构,并有能力完全瘫痪任何中等负载的网站。 在大多数情况下,对第三方网站也是粗鲁的。

如果该网站的DNS出现故障,或者其网站停止运转,那么它有可能阻止所有的Apache儿童等待回应。 在这一点上,您的网站将不可用。 根据代码的写法,可能会有更糟的含义。

我认为最有意义的是通过脚本定期轮询数据并使用这些结果。 存储数据的最佳位置可能是数据库。

一个Web代理就是这样一个kludgey的解决scheme,我甚至不能认为它是可以接受的。

如果尚不可用,则本地DNScaching可能会帮助略微降低开销。

我看到的一个可能的问题是修改www.thirdparty.com的/ etc / hosts指向一个内部Web服务器,该服务器显示通过上述每晚运行的cron脚本拉下的内容。

虽然这可能工作,你不应该这样做。 应用程序需要更改。