CDN加速介绍


最近一直在搞CDN,都快搞吐了,趁这个机会我就简单的把CDN的原理说一下。
我这里拿七牛云CDN加速的图片说一下

我们在请求网址的时候,如果不加CDN的话,默认就直接访问我们的服务器获取资源。如果我们加了CDN,那么我们访问的就不是我们的服务器了,而是别人的CDN节点。CDN节点遍布国内,默认会找最近的节点返回数据给你。

CDN加速原理

实际上就是利用缓存原理,比如A用户访问了一张图片,如果这张图片不在CDN服务器上,那么CDN服务器就会请求我们的源站,然后把源站返回的结果转发给A用户并缓存,然后B用户访问的时候,这张图片以及在CDN服务器上了,所以就不会请求源站而是直接返回缓存内容给你。因为我们的服务器一般带宽都很小,所以返回资源需要一段时间,而如果CDN节点带宽很大所以资源返回的速度也非常快,这就是CDN加速的原理。

回源HOST和源站地址的区别

源站地址其实就是你的服务器地址,我们一般用ip地址(当然你也可以用域名,不过这个配置要多一步,所以不是很推荐)。源站地址存在的意义就是当CDN没有缓存某个资源的时候,就会向源站发送请求,获取这个资源并缓存,所以源站地址不能填CDN加速的地址,要不然就会无限套娃。。。

而回源HOST就是CDN节点向源站发送请求的时候附带的头部参数地址,这个地址就是用于源站地址判断的,因为源站一般有多个域名绑定的,通过回源HOST就可以知道你要请求那个网站。所以我们一般都是直接用CDN加速地址作为回源HOST,然后自己把这个CDN加速地址作为我们的网站地址。

缓存配置是啥

缓存配置就是配置CDN节点需要缓存什么内容,因为我们的网站一般都是动态的,如果我们全部都缓存的话那么就会出现你内容更新后页面并不更新的问题(因为这个页面是CDN节点缓存了的,CDN节点直接返回的是缓存的内容,而不是源站的内容),一般缓存配置有下面这几个选项

通常情况下,我们一般都会缓存静态文件,因为静态文件一般都是不变的,所以非常适合缓存,缓存时间根据自己的喜好确定就行,缓存时间就是缓存过期的事件,如果缓存超过了这个时间就会自动失效,然后重新从源站获取资源。

什么是参数过滤

有时候我们访问的图片后面可能会带有参数,如果参数不同那么CDN就会认为这是两张不同的图片,但是有时候这两张图片其实是一样的,所以我们需要进行参数过滤。一张图片参数不同不会重新向源站发送请求

什么是range回源

要先想知道range回源就必须要清楚什么是range。range是http请求参数里的的一个参数,用于指定文件的访问,默认情况下我们下载文件是如果文件很大,不会一次性全部返回,而是返回部分,然后我们一部分一部分的下载,下载的时候我们只需要修改range参数,就可以慢慢的把整个文件下载了。range回源就是基于这个原理,如果我们的缓存刚好过期,这时候CDN节点就会向源站发送请求,如果这时候刚好又来一个用户下载同一个文件,这个时候CDN同样会向源站发送请求。CDN缓存只会缓存整个文件,如果开启了range回源,那么CDN就会缓存分片文件,然后我们另一个用户下载的时候就可以直接下载缓存的分片文件了,而不需要重新向源站发送请求。

什么是HTTPS2.0

http2.0其实就是http1.0协议的升级版本,http2.0相比1.0版本有下面几个优点

  • 采用二进制格式传输数据,而非文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
  • 对消息头进行压缩传输,能够节省消息头占用的网络的流量,而 HTTP 1.1 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源,头压缩能够很好的解决该问题。
  • 多路复用,就是多个请求都是通过一个 TCP 连接并发完成, HTTP 1.1 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求,同时流还支持优先级和流量控制。
  • 服务器推送,服务端能够更快的把资源推送给客户端,例如服务端可以主动把 JSCSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求,当客户端需要的时候,它已经在客户端了。

什么是referer防盗链

referer是http请求参数,它表示是那个链接发送的这个请求。我们有时候不想让别人直接用我们的图片,这样我们就可以根据Referer,如果不是我们网站的Referer那么我们就返回403状态码。

命中率偏低有什么原因

1.最直接的就是源站返回的内容的response里面设置的不缓存(这个是我之前命中率老是为0的原因),宝塔的nginx反向代理的时候回自动加上不缓存这个字段,比如我们这里就需要把这个字段给注释掉

2.其他原因(摘除自腾讯云)

  • 检查是否进行了缓存刷新:缓存刷新会清空节点上指定内容,短时间会出现命中率下降的情况。
  • 检查源站是否上新资源:源站上新资源较多,会引起 CDN 节点回源,流量命中率会出现下降趋势。
  • 检查源站是否异常:若源站出现故障,5XX或4XX较多时,也会影响流量命中率。
  • 检查缓存过期策略是否配置正确:查看控制台缓存配置中“缓存过期配置”部分,缓存过期规则优先级为从上到下,从低到高,即下部的缓存策略会覆盖上部的缓存策略。
  • 检查是否开启 Range 回源:查看控制台回源配置中 “Range 回源”部分,若关闭了 Range 回源,会导致回源时拉取整个大文件,而不是按照请求时分片拉取,会拉高回源流量,从而影响流量命中率。
  • 检查是否开启过滤参数:查看控制台访问配置中“过滤参数”部分,若关闭了过滤参数,则按照全路径缓存,同一资源不同参数请求时,无法匹配会缓存多份,从而影响流量命中率。

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录