有和没有清漆的空载时间差异

No load time difference with and without varnish

我正在尝试使用清漆缓存在我的服务器上缓存静态文件。我将 varnish 配置为缓存带有图像扩展名(.jpg、.png 等)的文件。之后,我打开我的网站并使用浏览器开发人员工具对其进行调试,并检查我网站上所有图像的加载时间,无论是否使用清漆,加载时间都没有差异。 X-Cache 条目中有一个 "HIT" 作为响应 header,所以图像在我的缓存中可用,对吗?知道我做错了什么吗?

Ps。我正在使用 nginx 作为后端服务器

Varnish 不应对静态文件产生实际影响,尤其是当它们位于 SSD 上时。经常访问的站点可能是个例外,尤其是当数据存储在(慢速)HDD 上时。这里有大量 I/O 可以通过使用 Varnish 在 ram 中缓存图像来大大减少。但这些可能是一些特殊情况,其中缓存静态文件是有意义的。对于 nginx 也很明显,这是一个非常快速的网络服务器,非常擅长传送静态文件。

Varnish 的主要目的是 HTML 由某些服务器端后端生成,例如 PHP、ASP.NET 以及为此任务设计的其他语言。与提供静态文件相比,生成动态内容对时间非常敏感:例如,后端负责处理当今 Web 应用程序中非常常见的数据库查询或解析模板。 Wordpress 是一个广泛使用的 CMS,也是一个很好的例子:几个 10k 的 php 代码在单个请求上执行,并且根据插件的数量,100 个数据库查询以及更多也不例外。

所以服务器有很多事情要做——针对每个请求。对于您作为网站所有者,这具有以下影响:

  1. 页面加载时间增加,过高会导致问题:

  2. 根据访问者的数量,您可能需要花钱购买更多或更强大的服务器

Varnish 可以将后端生成的 HTML 存储在 RAM 或硬盘上。特别是对于 SSD,后者更有意义。根据您网站的结构和用途,Varnish 至少会提高您的页面速度,并且可能还会节省资金,因为更少(功能强大的)服务器就可以完成这项工作。

当 Varnish 用作动态生成内容的前端时,您会注意到明显的差异。根据应用程序的不同甚至有很大的不同。我为基于 vBulletin 的论坛配置了 varnish,可以将页面加载时间缩短大约 5 倍。

总结 你应该专注于缓存动态页面而不是像图像或客户端脚本这样的静态内容,因为在大多数情况下网络服务器已经足够好来提供这些东西。当静态内容真的很慢时,这可能可以通过使用 CDN 来改善。或者,您的网络服务器可能未针对最佳速度进行适当配置。例如,可能没有为图像定义生命周期。这会对性能产生负面影响,尤其是对较大的性能。但是,如果不进一步了解您的应用程序和配置,就不可能调查性能问题并给出具体的改进建议。