我正在尝试使用varnish cache在我的服务器上缓存静态文件。我将varnish配置为使用图像扩展名(.jpg,.png等)来缓存文件。之后,我打开我的网站并使用浏览器开发人员工具进行调试,并检查我网站上所有图像的加载时间,当我使用清漆时,加载时间没有差异。响应头中的X-Cache条目中有一个“HIT”,因此我的缓存中有可用的图像吗?知道我能做错什么吗?
聚苯乙烯。我正在使用nginx作为后端服务器
答案 0 :(得分:1)
Varnish对静态文件没有真正的影响,特别是当它们位于SSD上时。非常频繁的常用站点可能是例外,特别是当数据存储在(慢)HDD上时。在这里你可以通过使用Varnish缓存ram中的图像来大大减少I / O的数量。但这些可能是一些特殊情况,其中静态文件的缓存是有意义的。对于nginx而言,这也是一个非常快速的网络服务器,它非常擅长提供静态文件。
Varnish的主要目的是由一些服务器端后端生成的HTML,如PHP,ASP.NET和其他专为此任务设计的语言。与提供静态文件相比,它对生成动态内容非常敏感:后端工作例如在数据库查询上工作,这在当今的Web应用程序或解析模板中非常常见。 Wordpress是一个广泛使用的CMS,也是一个很好的例子:几个10k的php代码在一个请求上执行,并且根据插件的数量100个数据库查询和更多也不例外。
因此,对于每个请求,服务器都有很多事情要做。对于您作为网站所有者,这具有以下效果:
页面的加载时间增加,当它太高时会导致问题:
访客不是很耐心,当他们认为不够快时,他们会离开你的页面。一家每天10万美元的在线商店每年损失高达250万美元,延迟1秒(有关更多信息,请参阅https://blog.kissmetrics.com/loading-time/)
因此,谷歌使用加载时间作为您排名的指标并不出人意料(请参阅http://www.shoutmeloud.com/google-started-ranking-websites-based-on-load-time-and-speed.html)
根据访问量的不同,您可能需要花费更多或更多功能强大的服务器
Varnish可以将后端生成的HTML存储在RAM或硬盘上。特别是使用SSD,后者是有道理的。根据您网站的结构和使用情况,Varnish至少可以提高页面的速度,也可以节省资金,因为较少(强大的)服务器可以完成这项工作。
当Varnish用作动态生成内容的前端时,您会注意到明显的差异。根据应用程序甚至有很大差异。我为基于vBulletin的论坛配置了清漆,可以将页面加载时间提高大约5倍。
总结你应该专注于缓存动态页面而不是像图像或客户端脚本这样的静态内容,因为在大多数情况下,网络服务器已经足够好来提供这些东西了。当静态内容非常慢时,可以通过使用CDN来改善。或者,您的网络服务器可能没有很好地配置以获得最佳速度也许没有为图像定义生命周期作为例子。这会对性能产生负面影响,尤其是对较大的性能。但是,如果没有进一步了解您的应用程序和配置,就无法调查性能问题并给出具体内容如何增强它们。