使用Varnish为网站加速(二)缓存一个网站

简介: 【8月更文挑战第9天】使用Varnish为网站加速安装使用缓存一个网站

为什么要使用缓存:
访问过的数据会再次被访问到,热数据多次访问。
一个数据被访问过会后,离他最近的或者较近的客户端再次访问。

既然要缓存, 需要读取的高速,最好的方法,就是全部放到内存。
常见的内存数据库,memcached,redis,HANA。
但是对于页面,全放放到内存,太不现实,内存+高速缓存盘的方式来存储缓存。
Key-value,key存放于内存,value存放磁盘。

一种数据形式:key value
Key:对访问路径,URL,特定的特征,进行hash计算得出的结果,这种key存放于内存中。
Value:页体,我们用户真正得到的内容,一般存放在高速硬盘。

凡是与缓存缓存相关的,离不开两体:内存,高速硬盘。

常见的术语:
命中:能从缓存取出数据,如果是一台web站点,那么你的缓存服务器将是一台最前端服务器。
命中率:命中次数/(命中次数+非命中次数)。
热数据:经常被访问的数据。
内存缓存空间,磁盘缓存空间。
清理:定期清理,LRU(不常用的,最老的一类数据将其删除),定期更新(purge)。
缓存对象:用户信息,cookies,交易信息,页面内存,统统理解为object。
一、安装varnish
[root@xuegod63 ~]# yum install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx graphviz -y
[root@xuegod63 ~]# tar xf varnish-6.0.3.tgz
[root@xuegod63 ~]# cd varnish-6.0.3/
[root@xuegod63 varnish-6.0.3]# ./configure --prefix=/usr/local/varnish
[root@xuegod63 ~]# make && make install

vcl置文件
[root@xuegod63 ~]# cd /usr/local/varnish/
[root@xuegod63 varnish]# mkdir etc
[root@xuegod63 varnish]# cp share/doc/varnish/example.vcl etc/default.vcl
二、缓存一个网站
实战:配置xuegod63成为 varnish服务器加速xuegod64 web服务器
配置xuegod63成为 varnish服务器

[root@xuegod63 ~]# cd /usr/local/varnish/etc/
[root@xuegod63 ~]# vim efault.vcl

配置一个后端服务器

改:
16 backend default {
17 .host = "127.0.0.1";
18 .port = "80";
19 }
为:
16 backend web1 {
17 .host = "192.168.1.64";
18 .port = "80";
19 }

查看缓存命中情况:
改:
35 sub vcl_deliver {
36 # Happens when we have all the pieces we need, and are about to send the
37 # response to the client.
38 #
39 # You can do accounting or modifying the final object here.
40 }
为:
35 sub vcl_deliver {
36 if (obj.hits > 0) {
37 set resp.http.X-Cache = "HIT from xuegod cache";
38 }
39 else {
40 set resp.http.X-Cache = "Miss from xuegod cache";
41 }
42 return (deliver);
43 }
保存退出。

配置varnish环境变量
[root@xuegod63 ~]# vim /etc/profile.d/varnish.sh
export PATH=/usr/local/varnish/bin:/usr/local/varnish/sbin:$PATH
[root@xuegod63 ~]# . /etc/profile.d/varnish.sh
启动varnish服务器
[root@xuegod63 ~]# varnishd -a 192.168.1.63:80,HTTP -f /usr/local/varnish/etc/default.vcl

配置xuegod64 为web服务器
[root@xuegod64 ~]# yum install httpd -y
[root@xuegod64 ~]# echo 192.168.1.64 > /var/www/html/index.html #创建首页
[root@xuegod64 ~]# systemctl restart httpd #在xuegod64上开启web服务器

测试源站点:
在浏览器中访问:http://192.168.1.64/
测试加速:
在浏览器中访问:http://192.168.1.63/

能够正常访问,说明代理设置成功。
测试缓存命中
扩展:curl命令
curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态。
参数:
-I只取http响应头的信息,不取网页内容

例:
[root@xuegod63 ~]# curl -I 192.168.1.64 #在xuegod63上查看xuegod64开启动的web服务器类型
HTTP/1.1 200 OK
Date: Tue, 04 Dec 2024 08:33:31 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Tue, 04 Dec 2024 08:28:08 GMT
ETag: "d-57c2e0b9e7ead"
Accept-Ranges: bytes
Content-Length: 11
Content-Type: text/html; charset=UTF-8
实例2:测试缓存命中
[root@xuegod63 ~]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Date: Tue, 04 Dec 2024 08:34:19 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Tue, 04 Dec 2024 08:28:08 GMT
ETag: "d-57c2e0b9e7ead"
Content-Length: 11
Content-Type: text/html; charset=UTF-8
X-Varnish: 32773
Age: 0
Via: 1.1 varnish-v4
X-Cache: MISS from xuegod cache #未命中
Connection: keep-alive
再次测试:
[root@xuegod63 ~]# curl -I 192.168.1.63
。。。
X-Cache: HIT from xuegod cache #有命中

如图出现还是没有命中的情况下:
[root@xuegod63 ~]# curl -I 192.168.1.63
。。。
X-Cache: MISS from linuxidc cache #还是没有命中

解决需要开启apache 长链接功能
[root@xuegod64 ~]# vim /etc/httpd/conf/httpd.conf
改: 76 KeepAlive Off
为: KeepAlive On
注意:如果 httpd.conf文件中没有KeepAlive Off,则需要手动添加。
[root@xuegod64 ~]# service httpd restart

再次测试:
[root@xuegod63 ~]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 08 Aug 2015 11:21:11 GMT
ETag: "25f61-d-51ccaf318dbb9"
Content-Type: text/html; charset=UTF-8
Content-Length: 11
Accept-Ranges: bytes
Date: Sat, 08 Aug 2015 11:28:36 GMT
X-Varnish: 1141298120
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS from linuxidc cache

[root@xuegod63 ~]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 08 Aug 2015 11:21:11 GMT
ETag: "25f61-d-51ccaf318dbb9"
Content-Type: text/html; charset=UTF-8
Content-Length: 11
Accept-Ranges: bytes
Date: Sat, 08 Aug 2015 11:28:37 GMT
X-Varnish: 1141298121 1141298120
Age: 1
Via: 1.1 varnish
Connection: keep-alive
X-Cache: HIT from linuxidc cache #命中

varnish服务器基本操作:
[root@xuegod63 ~]# curl -I 192.168.1.63
。。。
X-Cache: MISS from linuxidc cache

[root@xuegod63 ~]# varnishadm -S /etc/varnish/secret -T 192.168.1.63:80 'ban req.url ~ /index.html' #清除index.html页面缓存。
[root@xuegod63 ~]# varnishadm -S /etc/varnish/secret -T 192.168.1.63:80 'ban req.url ~ /index/' #也可以清除目录。
测试:
[root@xuegod63 ~]# curl -I 192.168.1.63/index.html

目录
相关文章
|
4月前
|
存储 缓存 前端开发
揭秘Web缓存:提升网站性能与用户体验
揭秘Web缓存:提升网站性能与用户体验
|
1月前
|
缓存 开发工具
使用varnish缓存多个网站(三)
【8月更文挑战第9天】使用varnish缓存多个网站
54 5
|
4月前
|
缓存 数据安全/隐私保护 UED
深入了解304缓存原理:提升网站性能与加载速度
深入了解304缓存原理:提升网站性能与加载速度
|
4月前
|
存储 缓存 前端开发
掌握Nginx缓存策略:提高网站性能,降低响应时间
掌握Nginx缓存策略:提高网站性能,降低响应时间
390 1
|
4月前
|
缓存 运维 Linux
LAMP+Varnish缓存详解(三)——多网站缓存
LAMP+Varnish缓存详解(三)——多网站缓存
40 2
|
4月前
|
缓存 运维 编译器
LAMP+Varnish缓存详解(二)——单网站缓存
LAMP+Varnish缓存详解(二)——单网站缓存
29 0
|
4月前
|
存储 缓存 运维
LAMP+Varnish缓存详解(一)——Varnish简介
LAMP+Varnish缓存详解(一)——Varnish简介
48 0
|
10月前
|
缓存 Ubuntu Linux
百度搜索:蓝易云【Varnish开源HTTP反向代理缓存服务器、部署安装、测试】
通过按照上述步骤部署和配置Varnish,您可以将其作为反向代理缓存服务器来提高Web应用程序的性能和响应速度。记住,在实际部署中,您可能需要进一步调整Varnish的配置以满足您的具体需求。
84 2
|
20天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
|
16天前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
39 0