菜鸟学Linux 第104篇笔记 varnish

简介:

菜鸟学Linux 第104篇笔记 varnish




内容总览

varnish

缓存类型

Expire,Cache-control, Etag

CDN (Content Delivery Network)内容分发网络

缓存

http 协议

varnish 安装




varnish


缓存类型

公用缓存

服务器端缓存,可供其它用户再次调用


私有缓存

用户个人电脑的缓存



Expire

expire  绝对时间记时

max-age 相对时间记时法


Cache-control

public

private

no-cache  不是不缓存,指的是缓存后想要使用此缓存时,既要向服务器发送验证其是否过期


Etag 后边会跟一串随机数,用来标识一个网站页面的版本,是否更改


条件判断





CDN (Content Delivery Network)内容分发网络

是一堆缓存服务器,有子缓存服务器和父缓存服务器,它们分别放在不同的物理地区,它们是用来

缓存网站的静态数据,和可缓存的动态数据,虽然他们可以缓存数据,但是用户访问的时候还是要

请求dns,而一般的dns会直接给出真正的web服务器的IP地址,从而直接访问真正的web服务器去了

如何让客户端访问网站时,先去访问缓存服务器,而不是直接访问真正的web服务器呢?

它是构建了智能dns,当一个用户访问某网站时,dns返回的IP地址是缓存服务器的地址,而非真正

的web服务器,缓存服务器除了可以为客户端提供缓存之外,有时候还可以自己自行去web服务器下

载过时的数据,或者需要缓存的数据,  智能DNS的原理是,分析不同的客户端所发来的dns请求,

根据其原IP地址,分析其所在的区域是网通还是电信。。等等而作出不同的返回值,即所返回的

DNS解析的IP地址会不同,一般都是回复给用户的地址离用户的距离最短或最快的缓存服务器。


cdn分类

自建cdn网络和租用cdn网络,租用的费用一般按流量来计算#元/M

(呵呵,,是不是还是自建的好?  这就得根据公司的领导如何决择了)

智能dns

bind view dns数据缓存在内存中(仅当条目少的情况下)

bind-dlz + mysql (将dns条目放在数据库中,相对上种响应客户端相对较慢)



缓存

命中率

文档命中率

字节命中率


缓存类型

私有缓存

公共缓存


内容路由

ICP (internet content protocol)

HTCP

Cache Digest

CARP Cache Array Routing Protocol

缓存处理的具体步骤

接收请求

解析请求 (代理的功能)

查询缓存 (检查本地缓存虽否存在对方请求的内容的副本)

副本的新鲜度检测 (检查本地缓存的副本是否为最新版本)

构建响应 (代理的功能)

发送响应

记录日志


保证副本的新鲜度?

文档过期机制

HTTP/1.0: Expires (过期时间) 绝对时间

HTTP/1.1: Cache-Control (max-age=) 相对时间


条件式请求

mtime: If-Modified-Since 基于时间的条件式请求

ETag: If-None-Match 基于扩展标签条件式请求



控制缓存的能力

由原始服务器定义

Cache-Control

max-age

s-maxage

no-store

no-cache 能缓存,但不能直接使用此缓存对象,需要先验证其新鲜度

must-revalidate 必须进行新鲜度验证


原始服务器不添加任何机制,由缓存服务器自己决定缓存时长


客户端控制缓存

Cache-Control

max-stale 告知缓存机制可以使用过期的文档

no-cache 告知缓存机制必须进行验证,否则不会接受任何缓存文档

no-store 告知缓存机制尽快删除缓存中的文档




http 协议

request:

method url version

HEADERS

BODY


response

version status reason

HEADERS


BODY


首部

通用

Connection: close|keep-alive

Date 时期时间

Host 请求的主机

Pragma no-cache

via: 请求或响应在客户端和服务器之间传递时所经过的代理

Transfer-Encoding 消息主体的传输编码方式,chunked表示采用编码的方式

请求

If-Modified-Since

If-None-Match

Referer

User-Agent 用户浏览器类型


Host 请求的主机

Accept-Encoding 接受的编码方式

Accept-Language 接受的语言

Authorization 服务端发送www-authenticate时,客户通过此首部提供认证信息

Accept-Chaset 接受的字符集

响应

Etag

Location 重定向的新位置

Server 服务器软件信息

WWW-Authenticate 要求对客户端进行认证

实体

Content-Encoding

Content-Language

Content-Lenth

Content-Type 内容的MIME格式

Expires

Last-Modified


varnish

一个公共缓存服务器

日志直接保存在内存中

一个管理进程,多个子进程,用来响应用户的请求,和缓存的管理

提供cli接口

VCL compiler (Vanish Control language) 写程序来定义配置文件

C compiler


状态引擎

vcl_recv, vcl_pass, vcl_hash, vcl_pipe

vcl_hash: vcl_hit, vcl_miss

vcl_pass: vcl_fetch

vcl_hit: vcl_deliver, vcl_pass

vcl_miss: vcl_fetch, vcl_pass

vcl_fetch: vcl_deliver




varnish 安装

下载varnish 的rpm包 但是版本相对较老是2.0的

现在最高版本为5.0多的   rpm包下载请到epel里查找


所依赖的安装包

varnish-libs-2.1.5-6.el6.x86_64

jemalloc-3.6.0-1.el6.x86_64.rpm


下载完成使用yum来安装此软件

# yum --nogpgcheck localinstall varnish-2.1.5-6.el6.x86_64.rpm


(日后还需再提升,此次仅做了解,配置varnish需要对那几个状态引擎和http协议有一定的深入

了解才可配置使其缓存服务器发挥出最大的功用,varnish是key-value存储方式,它的缓存数据

需要用户去自行定义需要缓存的数据,所以你懂得呵呵,必须得对web服务器经常访问的热点数据

有相当的了解程度,个人见解  娱乐娱乐, 以后再深入研究呵呵 )

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1899164如需转载请自行联系原作者


Winthcloud

相关文章
|
6天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
22 0
|
7天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
26 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
6天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
13 0
|
23天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
40 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
Linux 数据安全/隐私保护 Android开发
10 个最佳 Linux 开源笔记软件
10 个最佳 Linux 开源笔记软件
127 1
|
2月前
|
缓存 Shell Linux
《linux鸟哥的私房菜》笔记(下)
《linux鸟哥的私房菜》笔记(下)
24 0
|
2月前
|
存储 Unix Linux
《LINUX鸟哥的私房菜》笔记(上)
《LINUX鸟哥的私房菜》笔记(上)
49 0
|
4月前
|
架构师 Linux 网络性能优化
linux内核升级笔记
linux内核升级笔记
29 0