/images/hugo/avatar.png

27.3 VCL 语法基础

VCL 语法基础

/images/linux_mt/linux_cache.jpg

varnish 的缓存配置,使用的是 VCL,一种与 C 类似的域专有类型的配置语言。本节我们先来对 VCL 做一个介绍。

1. VCL 组成与处理流程

1.1 VCL 组成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.
}

sub vcl_backend_response {
    # Happens after we have read the response headers from the backend.
    #
    # Here you clean the response headers, removing silly Set-Cookie headers
    # and other mistakes your backend does.

VCL 可以看作是在 C 语言基础上二次开发的子语言,保留了 C 语言基本的语法,并额外附加了特性:

10 工业级的排序算法

/images/algo/sort/all_sort.jpg 实现一个通用的,高效的工业级排序函数

1. 排序算法对比

前面我们介绍了最常见最经典的几个排序算法,它们有不同的时间复杂度,空间复杂度与使用情景。那么如何用它们实现一个通用的、高效率的排序函数呢?

27.2 varnish 架构及安装

varnish 架构及安装

/images/linux_mt/linux_cache.jpg

varnish 是 http 缓存服务器的"新星势力",它与 squid的关系,类似于 httpd 与 nginx。varnish 有个最大的问题是,它的配置文件随着版本的变化变化非常大。本节我们以 4.0 系列的版本来讲解 varnish 的架构,安装和程序组成

09 线性排序

/images/algo/sort/bucket.jpg 非基于比较的三个排序算法: 桶排序,计数排序,基数排序

1. 线性排序

桶排序、计数排序、基数排序的时间复杂度是线性的,所以我们把这类排序算法叫作线性排序(Linear sort)。之所以能做到线性的时间复杂度,主要原因是,这三个算法是非基于比较的排序算法,都不涉及元素之间的比较操作。

27.1 web架构缓存优化

web架构缓存优化

/images/linux_mt/linux_cache.jpg

上一章我们学习了如何使用 keepalived 实现一个高可用集群,接下来我们来继续完善我们的 web 站点架构,本章我们来讲解另一个重要内容,web 站点的缓存系统。

08 基于比较的排序(下)

/images/algo/sort/merge_quick.jpg 基于分治编程思想的归并排序和快速排序

1. 分治

前面讲到的三种排序算法,平均时间复杂度都是 O(n2),只是适合规模较小的数剧集,接下来要讲的归并排序和快速排序,平均时间复杂度都是 O(nlogn),它们都用到了分治思想。