什么是 CDN ?
CDN 全称是 Content Delivery Network/Content Distribution Network,意思是 内容分发网络 。是针对静态资源访问加速的一种方式,可以将静态资源分发到不同的地方,用户访问的时候实现就近访问,提升静态资源的响应速度,减轻服务器压力及带宽负担。
CDN 工作原理是什么?
- 浏览器向DNS发送资源请求。
- DNS服务根据CNAME别名记录向GSLB发送请求。
- GSLB返回性能最好的CDN节点地址给浏览器。
- 浏览器直接访问CDN节点。
- 如果CDN节点中无用户请求资源或资源已经过期了,CDN节点会进行回源,需要从原始服务器获取最新资源内容。
- CDN节点缓存并返回资源给浏览器。
GSLB (Global Server Load Balance,全局负载均衡)是 CDN 的大脑,负责多个 CDN 节点之间相互协作,最常用的是基于 DNS 的 GSLB,
GSLB 会根据请求的 IP 地址、CDN 节点状态(比如负载情况、性能、响应时间、带宽)等指标来综合判断具体返回哪一个 CDN 节点的地址。
当回源发生时,本次请求会比没有CDN加速还要慢,因为要多一次CDN调用过程。为了防止回源,可以先进行预热,主动将静态资源缓存到CDN节点上。
如何防止资源被盗刷?
一般有两种方式
- 设置 Referer防盗链,获取HTTP请求头中的Referer字段进行限制,获取请求来源的网页地址,如果是不合法的就拦截。
当然请求方可以隐藏Referer字段,这样就无法获取到来源网址,可以使用第二种方法。 - 时间戳防盗链,安全性更好,将用户设定的加密字符传,请求路径,时间戳,进行MD5加密得到签名字符串和过期时间作为URL参数。
一般两种方法可以组合使用。可以有效防止资源被盗刷。