目录
前瞻
web缓存代理的工作机制
web缓存代理的作用
常见的Web缓存代理应用
squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
数据库缓存代理应用
Nginx 缓存代理
CDN缓存代理
简介
原理
CDN对网络的优化作用主要体现在如下几个方面
CDN工作原理
传统访问过程
CDN访问过程
前瞻
web缓存代理的工作机制
web缓存代理的作用
存储一些之前被访问的,且可能将要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器获取资源,从而减少上游原始服务器的负载压力,加快整个访问速度。代理服务器还可以代替客户端去获取原始服务器的资源,从而隐藏客户端真实地址。
- 资源获取:代替客户端实现从原始服务器的资源获取
- 加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用
- 缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取
- 隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息
常见的Web缓存代理应用
本地实现 Nginx Squid Varnish
云环境远端实现 CDN
squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
数据库缓存代理应用
Redis Memcached
Nginx 缓存代理
nginx.conf文件配置
http {proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;#####################################################
●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache; 代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2; 代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。
#####################################################upstream cache_server{server 192.168.75.60:80;server 192.168.75.70:80;}server {listen 80;server_name www.kgc.com;location / {proxy_cache my_cache; #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义proxy_cache_valid 200 10s; #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为10秒钟proxy_cache_key $request_uri; #指定缓存文件的key为请求的URIadd_header Nginx-Cache-Status $upstream_cache_status #把缓存状态设置为头部信息,响应给客户端proxy_pass http://cache_server; #设置代理转发的后端服务器的协议和地址}}
}
去到节点服务服务器添加测试文件
在html路径下添加测试文件
开启缓存服务器和上游节点服务器的nginx服务
缓存状态
MISS # 未命中缓存HIT # 命中缓存EXPIRED # 缓存过期STALE # 命中了陈旧缓存REVALIDDATED # Nginx 验证陈旧缓存依然有效UPDATING # 内容陈旧,但正在更新BYPASS #x 响应从原始服务器获取
去到浏览器进行访问测试
CDN缓存代理
简介
CDN的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有
的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边
缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全
面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速
度。
简单的说,CDN的工作原理就是将您源站的资源缓存到位于全球各地的CDN节点上,用户请
求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免
网络拥塞、缓解源站压力,保证用户访问资源的速度和体验
原理
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的
地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正
常的缓存服务器上,由缓存服务器直接响应用户请求。
全局负载均衡主要用于在多个区域拥有自己服务器的站点,为了使全球用户只以一个IP地址
或域名就能访问到离自己最近的服务器,从而获得最快的访问速度。
CDN 基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节使内
容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上
的一层智能虚拟网络,CDN 系统能够实时地根据网络流量和各节点的连接、负载状况以及
到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
其目的是使用户可就近取得所需内容,解决 Internet 网络拥挤的状况,提高用户访问网
站的响应速度。
CDN对网络的优化作用主要体现在如下几个方面
- 解决服务器端的“第一公里”问题
- 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
- 减轻了各省的出口带宽压力
- 缓解了骨干网的压力
- 优化了网上热点内容的分布
CDN工作原理
传统访问过程
1.用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
2.LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
3.ROOT DNS将域名授权dns记录回应给 LocalDns
4.LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
5.域名授权dns 查询域名记录后,回应给 LocalDns
6.LocalDns 将得到的域名ip地址,回应给 用户端
7.用户得到域名ip地址后,访问站点服务器
8.站点服务器应答请求,将内容返回给客户端.
CDN访问过程
1.用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
2.LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
3.ROOT DNS将域名授权dns记录回应给 LocalDns
4.LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
5.域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns
6.LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址
7.智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip
地址回应给 LocalDns
8.LocalDns 将得到的域名ip地址,回应给 用户端
9.用户得到域名ip地址后,访问站点服务器
10.CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保
存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)
通过以上分析我们可以得到为了实现对普通用户透明(使用缓存后用户客户端无需进
行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明
的加速服务. 由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问
是最简单有效的方式