2020-07-03 08:43

如何使用Varnish加速您的静态网站

  页面速度是网站繁荣的基础,GTMetrix,Pingdom,WebPageTest.org和Google PageSpeed Insights等页面速度测试设备可帮助您实现这一目标。如果你想了解这方面的内容,请联系我们济南网站建设

  这些工具提供了有利可图的知识,使您能够识别出页面速度受到影响的地方,无论如何,它们在执行操作方面受到限制,以使您无法增强自己的网站。

  事实是,这些工具可以提醒您注意影响您站点的客户面临的问题,但是,从某种意义上讲,它们不能“看着引擎”。他们无法就您正在放弃的重大服务器端优势来教育您,因为这将极大地提高您的页面速度。

  清漆入门Varnish的入门很简单,如果您确实了解自己在做什么,则需要花费几分钟的时间。但是请注意,液滴不是自由的。

  对于学习者来说,服务器管理并没有消失。通过这种方式,您需要附带一些必需品:

  –了解Ubuntu(或任何基于Linux的工作框架)

  –了解命令行界面或终端

  –具有root SSH访问权限的服务器

  –基本了解配置Web服务器的知识(本教程利用Nginx)

  使用Varnish加速您的网站Varnish Cache是​​一种流行的缓存HTTP反向代理。不久前,我们写了关于使用nginx作为反向代理的文章。无论如何,尽管nginx作为反向代理是令人难以置信的,但它不执行保留。对于需要提供静态内容负载的站点或Web应用程序,缓存可能非常有吸引力。大多数通用站点都属于这一类,而可以想象的是,独特的Web应用程序可以通过缓存获利。

  Varnish位于任何HTTP兼容服务器之前,可以设计为专门缓存内容。它可能比后端传输存储内容的速度更快-特别是如果请求通常在后端进行某些处理,例如渲染或查看文件系统或数据库中的资源时,尤其如此。尽管Varnish的默认存储机制由文件系统赞助,但可以设计为使用malloc通过RAM来直接缓存来分配容量。

  默认行为关于Varnish中的默认行为,有几件重要的事情要知道:

  关于Varnish中的默认行为,需要了解一些关键事项:

  •Varnish因此会在特殊情况下尝试缓存其处理的所有请求:

  •不会缓存包含请柬标头或授权标头的请求。

  •它不会缓存后端响应所显示的不应保留的需求(例如Cache-Control:no-cache)。

  •它只会缓存GET和HEAD请求。

  •Varnish会缓存默认120秒的需求。根据资产要求的种类,可以对此进行调整。

  •除非特别覆盖,否则它将提供从后端获取的所有Expires / Last-Modified / Cache-Control标头。

  子程序另外必须认识到,通过Varnish进行的招标是由一系列子例程来处理的:

  vcl_recv:在需求开始时调用。它选择是否满足需求,而不管是否更改需求以及使用哪个后端(如果适用)。

  vcl_pass:如果启动通过模式则调用。在通过模式下,当前需求传递到后端,并且相应地返回响应,而不会对其进行缓存。

  vcl_hash:调用以对请求信息进行哈希处理以识别高速缓存中的相关问题。

  vcl_miss:如果请求的问题不在高速缓存中,则调用。

  vcl_hit:如果需求的对象在高速缓存中,则调用。

  vcl_deliver:在将缓存的问题传达给客户端之前调用。

  vcl_fetch:从后端恢复资产后调用。它选择是否保留后端反应作为抗议,如何进行抗议以及是否在缓存之前更改问题。

  vcl_pipe:如果管道模式已启动,则调用。在管道模式下,对当前关联的需求未更改地直接传递给后端,并且在不缓存的情况下比较返回响应,直到关闭该点为止。

  动作每个子例程都以一个活动结束。依靠子例程可以访问独特的活动。在大多数情况下,每个活动都与一个子例程进行比较:

  交付:将问题插入备用中(如果可缓存的话)。从长远来看,流程将转到vcl_deliver。

  错误:将给定的错误代码返回给客户。

  提取:从后端索取抗议。流将不可避免地转到vcl_deliver。

  hit_for_pass:创建一个“通过”问题,该问题保留了该抗议应通过的方式。从长远来看,流将达到vcl_deliver。

  查找:在商店中查找要求抗议的地方。从长远来看,流将达到vclhit或vclmiss,这取决于问题是否在商店中。

  pass:激活通过模式。从长远来看,该流将到达vcl_pass。

  pipe:激活管道模式。流将不可避免地到达vcl_pipe。

  hash:创建请求信息的哈希,并在缓存中查询相关对象。

  车流量正确配置Varnish需要考虑周全的响应和需求如何流经各个子例程。请参阅下图,以了解所有内容如何组合在一起。子例程以气泡显示,许多功能(例如,传递,获取,传递等)在连接线之外显示,与后端和缓存的交互以菱形显示。有关更准确,完整的图表,请参见Varnish Wiki。

  正确设计Varnish需要了解需求和反应如何在不同的子例程中移动。请参阅下面的轮廓,以了解所有内容如何组合在一起。子例程出现在气泡中,除了接口线之外,还显示了多种功能(例如,通过,带来,传送等),并且与后端和备用的关联出现在宝石中。有关更精确,完整的图表,请联系我们济南网站建设进行了解。