美文网首页
1- 什么是Varnish Cache

1- 什么是Varnish Cache

作者: sammeal | 来源:发表于2018-10-22 09:52 被阅读0次

Varnish Cache是一个所谓的反向缓存代理服务器。它通过缓存服务端的输出来减少你的网站/应用/API的加载时间,从而提高性能。

为什么WEB性能很重要呢?

    性能和可伸缩性不是一回事,性能体现在你的网站的速度,比如加载某个页面的时间。可伸缩性则是当负载增加时性能能否保持稳定。

    网站性能对于用户体验来说是不可或缺的一部分,它决定了你的网站是否能留住用户,并影响你的网站排名。

Varnish适合做什么?

    varnish是开源的并且容易配置,使用它你能够轻而易举的减少网站的加载时间。但是varnish不是银弹,还有很多组件也会影响性能,比如网络,操作系统,web服务器,应用运行时间等

Varnish是如何工作的?

    varnish安装在web服务器或者单独的机器上。一旦安装完成并启动,varnish会模仿后端服务器的行为。varnish默认监听TCP80端口。varnish会注册一个或多个后端(backend),并与其中一个后端通信,以防无法从缓存中检索结果。

    varnish会预先分配一块内存来存储其对象,对象包括HTTP响应头部和从后端接收到的有效负载。存储在内存中的对象将被提供给请求相应HTTP资源的客户端。默认情况下,缓存中的对象都由一个Hash标识,它由主机名(或者ip地址,若hostname不存在)和请求url组成。

    Varnish非常快,并且依赖pthreads来处理大量传入的请求。线程模型和内存的使用将大大提高应用程序的性能,如果配置的当,varnish将使你的网站快1000倍。

    Varnish使用Varnish配置语言(VCL)来控制缓存的行为。VCL是一种领域特定语言,它提供钩子(hooks)来覆盖和扩展Varnish有限状态机中不同状态的行为。这些钩子由VCL中存在的一组子例程表示。子例程和VCL代码位于VCL文件中。在启动时,将读取VCL文件,将其转换为C并编译,并作为共享对象动态加载。

如果你想扩展varnish的行为,你可以用c语言编写自定义模块。

缓存不是一个诡计

    事实上,大多数网站、应用程序和api都是数据驱动的。这意味着它们的主要目的是表现和可视化那些来自数据库或外部资源的数据。大部分时间用在了检索、组装和可视化数据。当你不缓存时,每次客户端请求时会重复这个过程。即使数据没有发生改变,这浪费了大量资源。

    可以肯定地说,缓存是服务于最新数据和确保可接受的加载时间之间的平衡。缓存是一个架构决策,如果做好了,它能够提高效率并降低基础设施成本。

总结

Varnish是一个可以缓存HTTP流量的工具,可以从服务器上卸下大部分负载。

相关文章

网友评论

      本文标题:1- 什么是Varnish Cache

      本文链接:https://www.haomeiwen.com/subject/tmuwzftx.html