在本地提供 http 内容文件,而不是关闭外部服务器

Ale*_*ann 1 varnish static-content cdn

当从不同的内容源构建我们的网页时,可能需要从外部服务器获取一些图像(例如,当合并 rss 提要时),这可能不像我们自己的数据中心那么快或连接得那么好。我希望有一种方法可以分别将代理文件复制到我们站点上运行的服务器地址中,以减轻外部服务器的负载,可能会更改文件名以隐藏图像是动态生成的事实。

例如打开以下网址

http://domain.de/content/query?file=foo/nr_1.gif

变成这样:

mydomain.net/static/domain.de/query_3fresource_3dfoo_2fnr_5f1.gif

这应该尊重 etags, if-modified-since change expires headers 以使文件静态和可缓存,无论原始服务器说什么。

我想我可以使用 varnish 和另一个 Web 服务器来构建这样的东西,但也许已经有一个解决方案可用。

这可能是 CDN 的一部分,但是我不认为真正的 CDN 有必要,因为我们没有很多来自其他国家的访问者

wom*_*ble 6

强烈建议使用诸如 varnish 或 squid 之类的代理,而不是下载文件并自己保留它们,以便代理处理所有缓存到期和其他使缓存变得如此有趣的娱乐活动。

如果您尝试缓存动态生成的内容并且在请求标头中没有正确的到期信息,则您要么需要让生成这些页面的人包含适当的标头(基于数据的更改率)在页面上),或者如果确实不可能,则覆盖 Varnish VCL 文件中的到期时间。

通过将所有内容检索到文件然后在本地提供它们来“缓存”意味着您可能会请求一大堆内容,而这些内容实际上永远不会提供给用户(意味着负载——网络流量、CPU、磁盘,无论如何 - 在源服务器上可能比现在更高)并且您最终将重新实现使缓存代理有用的大部分内容(到期,存储管理等)。这不值得。没有这样的事情在那里(我所知道的,反正),因为任何人都聪明足以让这样的事情是不完整的屁股是足够聪明,实现一个坏主意,它是什么,以及如何他们只是无论如何重新实现 Squid 的硬部分。

  • +1 同意 - 使用代理并为代理编写一些规则。 (2认同)