Varnish配置文件详解(架构师之路)

yizhihongxing

下面我为您讲解一下关于“Varnish配置文件详解(架构师之路)”的完整攻略。

什么是Varnish

Varnish是一个基于缓存的HTTP加速器,它可以在WEB服务器和客户端之间扮演反向代理服务器的角色,缓存WEB服务器的响应,加速内容的传输,节约带宽,提高WEB应用程序的性能和可扩展性。

Varnish配置文件的基本结构

Varnish的配置文件是一个标准的VCL(Varnish Configuration Language)文件,由三部分组成:VCL初始化、VCL请求处理、VCL响应处理。其中VCL初始化是运行在Varnish启动后,并只被执行一次的一些操作,如定义后端服务器、生成抓取响应的规则等;VCL请求处理是针对请求来进行的操作,包含配置内容的分发、缓存策略的处理、返回响应等;VCL响应处理则是在响应数据从后端服务器返回到Varnish后的处理。

Varnish配置文件示例1:定义后端服务器和URL抓取配置

vcl 4.0;

backend example {
  .host = "www.example.com";
  .port = "80";
}

sub vcl_recv {
  if (req.url ~ "/path/to/cache") {
    return(hash);
  }

  set req.backend_hint = example;
}

sub vcl_backend_response {
  set beresp.ttl = 24h;
}

sub vcl_deliver {
  if (obj.http.age) {
    set resp.http.X-Cache = "HIT from Varnish with Age: " obj.http.age;
  } else {
    set resp.http.X-Cache = "MISS from Varnish";
  }
}

这个示例中,我们定义了一个名为example的后端服务器,并且配置了一个URL抓取规则,当请求的URL匹配上“/path/to/cache”时,使用哈希进行内容的缓存。同时,在请求进入后端服务器后,我们设置响应的过期时间为24小时,并且在发往客户端时添加了一个包含缓存状态的HTTP头,以告知客户端此次请求是从缓存中获取的。

Varnish配置文件示例2:缓存公共资源的策略

vcl 4.0;

backend example {
  .host = "www.example.com";
  .port = "80";
}

sub vcl_recv {
  # 通过HTTP头判断是否为GET请求,并且开启了缓存控制的标志
  if (req.method == "GET" && req.http.Cache-Control !~ "no-cache") {
    # 针对CSS、JS、图片等资源进行缓存,避免反复请求同一份资源
    if (req.url ~ "\.(css|js|png|jpg|jpeg|gif|ico|svg|swf|woff|ttf|eot)$") {
      return(hash);
    }
  }

  set req.backend_hint = example;
}

sub vcl_backend_response {
  # 控制缓存时间为30天
  set beresp.ttl = 30d;
}

sub vcl_deliver {
  if (obj.http.age) {
    set resp.http.X-Cache = "HIT from Varnish with Age: " obj.http.age;
  } else {
    set resp.http.X-Cache = "MISS from Varnish";
  }
}

这个示例中,我们在VCL的vcl_recv阶段,对请求进行了处理,仅对GET方式请求的,同时未开启HTTP缓存控制的请求进行缓存处理。在匹配上特定类型的资源后,使用哈希进行缓存。在vcl_backend_response阶段,我们对返回至Varnish的数据,设置了过期时间为30天,也就是一旦缓存,此资源将在30天内都不会重新向后端服务器请求。而在vcl_deliver阶段,则像示例1一样,输出了缓存状态的HTTP头。

这些是Varnish配置文件的基本知识和示例,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Varnish配置文件详解(架构师之路) - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 详解IE6中的position:fixed问题与随滚动条滚动的效果

    下面是详解IE6中的position:fixed问题与随滚动条滚动的效果的完整攻略。 什么是position:fixed? 首先,我们来了解一下position:fixed是什么。在CSS中,position属性用于指定元素的定位方式,常见的值有relative(相对定位)、absolute(绝对定位)和fixed(固定定位)。 相对定位和绝对定位都是相对于…

    css 2023年6月10日
    00
  • Dreamweaver cc2018主题颜色怎么设置?

    Dreamweaver CC 2018是一款强大的网页设计工具,它的主题颜色设置可以帮助用户自定义软件的界面颜色,提高用户体验。下面是完整的攻略: 步骤一:打开Dreamweaver设置页面 在Dreamweaver主界面中,单击菜单栏上的“编辑” -> “首选项” -> “界面”。 步骤二:选择颜色方案 在设置页面中,有多个可供选择的颜色方案,…

    css 2023年6月9日
    00
  • JavaScript实现下拉列表

    请看下面的文章,我将为您讲解如何使用JavaScript实现下拉列表的完整攻略。 1. 什么是下拉列表 下拉列表也被称为“下拉菜单”,它通常是在网页中展示多个选项的最佳方式之一。下拉列表最常见的用途是在网页中显示选项供用户选择,一旦用户选择其中一个选项,选择就会被自动填充到输入框或文本框中。 2. 实现下拉列表的步骤 2.1. 创建HTML结构 创建下拉列表…

    css 2023年6月10日
    00
  • CSS文本格式化方法详解

    CSS文本格式化是指利用CSS来控制文本样式,从而达到美化页面的效果。在这里,我们将会讲解以下内容: 修改字体样式、大小、颜色 设置文本对齐方式 调整行高和字间距 使用文本阴影、下划线、删除线 控制单词、字母的间距 设置首行缩进、断字、断行 合理应用列表样式 接下来,我们将详细介绍每一个方面,并提供相应的代码示例。 修改字体样式、大小、颜色 在CSS中,可以…

    Web开发基础 2023年3月20日
    00
  • Bootstrap CSS组件之导航(nav)

    Bootstrap是一款流行的前端框架,其中的导航(nav)组件是常用的页面元素之一。下面,我将从以下几个方面详细讲解Bootstrap CSS组件之导航(nav)的完整攻略。 导航(nav)组件的基本结构 一个Bootstrap导航组件的基本结构如下: <nav class="navbar navbar-expand-lg navbar-l…

    css 2023年6月10日
    00
  • html+css+div实现电影结束效果

    下面是“html+css+div实现电影结束效果”的完整攻略。 1. 准备工作 在开始实现电影结束效果前,需要准备以下工具和材料: 编辑器:可以使用Sublime Text、Visual Studio Code等 浏览器:可以使用Chrome、Firefox等 网页模板:可以使用Github上的HTML5-Reset模板 图片素材:需要准备一张电影结束的图片…

    css 2023年6月9日
    00
  • div css制作网页实战笔记心得

    下面是详细的“div css制作网页实战笔记心得”的完整攻略: 1.什么是div和css? 1.1 div是什么? div是HTML中一个标签,它代表一个没有具体含义的元素容器,可以用来把网页内容划分成不同的块。我们可以在CSS中为它定义样式,使它的外观和行为与其它元素不同。 1.2 CSS是什么? CSS(Cascading Style Sheets)翻译…

    css 2023年6月10日
    00
  • DW网页元素怎么制作渐隐渐现效果?

    当我们需要让网页元素渐隐渐现的效果时,可以使用CSS3中的transition属性来实现。下面是具体的步骤: 步骤一:定义元素基本样式 首先,需要定义元素的基本样式,包括宽高、背景颜色、位置等信息。例如,我们定义了一个div元素,样式如下: div { width: 200px; height: 200px; background-color: red; p…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部