nginx ssi 是如何工作的?

Ami*_*Bar 2 nginx ssi

找不到关于它的任何信息..所以我有几个问题

我需要用它来帮助解决缓存失效的“大问题”

1)如果我理解正确,它需要在它提供的每个文件中进行搜索,以查找是否需要包含其他文件,这听起来很不理想?

2)它是一个接一个地取它们还是同时全部取它们?

3)这是否意味着如果我在 1 个文件中有 3 个 esi,那么我的 nginx 会为对该文件的每个请求多接收 3 个请求?

4) 2015 年是否投入使用?

除了提供任何技术信息的最小 nginx 文档之外,找不到任何关于它的信息,谢谢

Mar*_*555 6

根据ngx_http_ssi_module的文档,它会导致扫描所有响应以获取 SSI 命令。

所以它与文件或任何东西无关。无论内容是从哪里生成的(普通文件、反向代理、fastcgi/php),这个模块都会分析生成的内容。

  1. 我不认为 SSI 会给您带来重大的性能损失(除非您正在服务和分析大型二进制文件)。您可以通过 MIME 类型(默认情况下仅text/html)限制为 SSI 扫描哪些内容。如果您需要准确的数字,则需要使用和不使用 SSI 进行性能测试。

  2. 如果我们谈论从您的 SSI 命令中包含其他文件,那么默认情况下所有这些文件都是并行获取的,因此从时间角度来看,包含 1 个或 3 个文件并不重要。当然,对于 3 个文件,您的服务器还有更多工作要做。

  3. 是的,包含更多文件/url 意味着对 nginx 的更多请求(除非这些 url 指向其他服务器)。

  4. SSI 模块仍然存在于最新的 nginx 版本中,但我不知道是否有大公司实际使用它。这一切都取决于您想要实现的目标。我仍然不明白您想如何使用 SSI 进行缓存失效。

  • 补充一点#4 - 目前,SSI 广泛用于高流量网站。这个想法是首先从上游服务器获取并缓存一个 SSI 模板,然后用 SSI 子请求填充页面的动态部分,这些子请求通常由 memcached 或其他快速内存存储处理。每个进一步的请求都将使用已经缓存的 SSI 模板。这种方法可以通过避免在大多数时间请求后端(链中最慢的链接)来显着提高网站的性能。 (4认同)