使用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

目录
相关文章
|
25天前
|
缓存 安全 UED
网站图片缓存设置不当可能会导致哪些问题?
【10月更文挑战第18天】网站图片缓存的合理设置至关重要,需要综合考虑图片的性质、更新频率、用户体验、服务器性能等多方面因素,以避免出现上述各种问题,确保网站的正常运行和用户信息的安全。
|
25天前
|
存储 缓存 监控
网站的图片资源是否需要设置缓存?
【10月更文挑战第18天】网站的图片资源一般是需要设置缓存的,但要根据图片的具体特点和网站的需求,合理设置缓存时间和缓存策略,在提高网站性能和用户体验的同时,确保用户能够获取到准确、及时的图片信息。
|
25天前
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
71 7
|
2月前
|
缓存 弹性计算 应用服务中间件
如何使用 Wordpress?托管, 网站, 插件, 缓存
如何使用 Wordpress?托管, 网站, 插件, 缓存
|
7月前
|
存储 缓存 前端开发
揭秘Web缓存:提升网站性能与用户体验
揭秘Web缓存:提升网站性能与用户体验
|
4月前
|
缓存 开发工具
使用varnish缓存多个网站(三)
【8月更文挑战第9天】使用varnish缓存多个网站
68 5
|
7月前
|
缓存 数据安全/隐私保护 UED
深入了解304缓存原理:提升网站性能与加载速度
深入了解304缓存原理:提升网站性能与加载速度
|
7月前
|
存储 缓存 前端开发
掌握Nginx缓存策略:提高网站性能,降低响应时间
掌握Nginx缓存策略:提高网站性能,降低响应时间
491 1
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
78 6
|
16天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题