CDN : Content Delivery Network/Content Distribution Network, 内容分发网络:将静态资源分发到多个不同的地方以实现就近访问
绝大部分公司都会在项目开发中使用 CDN 服务,但很少有自建 CDN 服务的公司。基于成本、稳定性和易用性考虑,建议直接选择专业的云厂商(比如阿里云、腾讯云、华为云、青云)或者 CDN 厂商(比如网宿、蓝汛)提供的开箱即用的 CDN 服务。
预热:虽然没有用户请求这个CDN的某个网站,但是先把这个网站的静态资源放在CDN上,下次有请求来了,要这个网站就能直接给他。
要访问的资源在CDN中没有,需要从源站获取资源叫 回源。
如果资源有更新,可以对其 刷新 ,删除 CDN 节点上缓存的旧资源,并强制 CDN 节点回源站获取最新资源。
命中率 和 回源率 是衡量 CDN 服务质量两个重要指标。命中率越高越好,回源率越低越好
GSLB (Global Server Load Balance,全局负载均衡)根据请求的 IP 地址、CDN 节点状态(比如负载情况、性能、响应时间、带宽)等指标综合判断选择哪个CDN节点:
CDN 会通过 GSLB 找到最合适的 CDN 节点:
设置Referer 防盗链:根据 HTTP 请求的头信息里面的 Referer 字段对请求进行限制。我们可以通过 Referer 字段获取到当前请求页面的来源页面的网站地址,从而确定请求是否来自合法的网站
通常情况下,会配合其他机制来确保静态资源不被盗用,一种常用的机制是 时间戳防盗链 。安全性更强,加密的 URL 具有时效性,过期之后就无法再被允许访问。
时间戳防盗链的 URL 有两个参数:签名字符串,过期时间。签名字符串通过对用户设定的加密字符串、请求路径、过期时间通过 MD5 哈希算法取哈希的方式获得。