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

下面我为您讲解一下关于“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日

相关文章

  • jQuery实现的上拉刷新功能组件示例

    下面我来详细讲解一下如何实现“jQuery实现的上拉刷新功能组件示例”。 jQuery实现的上拉刷新功能组件示例 一、背景介绍 上拉刷新是移动端开发中常用的一种交互方式,它可以让用户在页面下拉到指定位置时进行数据加载,从而提高用户体验。本示例将使用jQuery来实现上拉刷新功能。 二、示例代码分析 示例代码中主要分为两个部分:HTML部分和JavaScrip…

    css 2023年6月10日
    00
  • Bootstrap实现带动画过渡的弹出框

    要实现带动画过渡的弹出框效果,可以使用Bootstrap中提供的Modal组件,该组件是一个可重复使用的弹窗模态框,支持多种功能和样式扩展。 下面是具体实现步骤: 步骤1- 引入Bootstrap库文件 在HTML文件中,通过以下代码引入Bootstrap的CSS和JavaScript库文件: <link rel="stylesheet&qu…

    css 2023年6月10日
    00
  • css控制超链接(css超链接样式)

    CSS控制超链接完整攻略 超链接是网页中常用的元素之一,在阅读过程中点击超链接可以实现页面的跳转。而且,通过CSS样式控制,可以美化超链接的外观,增加用户体验。下面是CSS控制超链接完整攻略: 基本语法格式 在CSS中,通过a标签来控制超链接的样式。a标签表示网页中的超链接,可以通过以下声明属性来控制其外观: a:link { /*超链接默认样式*/ } a…

    css 2023年6月10日
    00
  • windows下关于sublime text2,HTML/CSS/JS Prettify插件使用路径问题处理

    下面是关于”Windows下关于Sublime Text2,HTML/CSS/JS Prettify插件使用路径问题的处理”的完整攻略。 1. 安装Sublime Text2和HTML/CSS/JS Prettify插件 首先需要在官网上下载Sublime Text2安装包进行安装。安装完成后,打开Sublime Text2并进入菜单栏Preferences…

    css 2023年6月9日
    00
  • 使用CSS伪元素控制连续几个元素的样式方法

    使用CSS伪元素可以方便地控制连续几个元素的样式,常用于制作特定排版和装饰效果。下面是使用CSS伪元素控制连续几个元素的样式方法的完整攻略: 使用CSS伪元素控制连续几个元素的样式方法 1. 选择器 CSS伪元素可以通过选择器和属性选择器来指定样式。在选择器中,伪元素使用双冒号(::)来标识,而不是单冒号(:)。伪元素的名称可以通过选择器来引用,如下所示: …

    css 2023年6月10日
    00
  • css3 旋转按钮 使用CSS3创建一个旋转可变色按钮

    CSS3旋转按钮是一种常用的Web界面元素,它可以让用户感受到Web应用程序与其他类型的应用程序一样丰富和复杂。下面是创建CSS3旋转按钮的完整攻略,包含了关键代码和示例说明。 使用CSS3创建一个旋转可变色按钮 用HTML创建一个按钮 首先,我们需要在HTML文件中创建一个按钮元素,可以使用button或a元素,例如: <button class=&…

    css 2023年6月9日
    00
  • CSS 样式规则规则详解

    CSS规则是用来定义HTML元素样式的一种语法。其基本结构为: <selector> { <property>: <value>; <property>: <value>; … } 其中selector定义要应用规则的HTML元素,property为CSS属性,常见属性包括color、font-…

    Web开发基础 2023年3月23日
    00
  • 问题收集帖动网论坛完整程序包下载地址(包含所有补丁)

    标题:问题收集帖动网论坛完整程序包下载地址(包含所有补丁)攻略 一、前言 “问题收集帖动网论坛完整程序包下载地址(包含所有补丁)”是一款非常实用的论坛程序包,它集成了多种功能,包括帖子收集、回复统计、后台管理等功能。使用此程序包,能够大大提高论坛的使用效率,使用户获得更好的使用体验。 二、下载地址 您可以在以下网站下载到“问题收集帖动网论坛完整程序包下载地址…

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