CDN防盗链
应用场景
在我们搭建自己的阿里云CDN时,加快我们站点的静态文件响应速度。
但是与此同时,我们站点里的某些静态资源可能会被其他用户所盗取,然后使用我们的流量让他们的站点变得更流畅。
案例:
假设我们的网站为A 里面有一个静态的CDN链接
此时用户B看到我们的网站里的CDN链接并盗用了我这个链接,发布在他们自己的网站上。
此时用户看到用户B的图片的流程图
可以看见用户并不知道这个CDN链接是属于我的,此时站点B就是在盗用我的CDN链接,并且没有给我带来流量。使用 阿里云CDN是存在外网下行流量费用和请求费用的。
站点B这样的行为我称之为”白嫖“。
如果我们只是站在在道德层面上去指责别人,并不采取措施,我们的钱包里的钱就是为他人来带便利和流量。
所以我们需要CDN防盗链
阿里云配置
step1:找到CDN防盗链配置
step2: 配置防盗链
我配置允许通过浏览器地址栏直接访问资源url,如果关闭了,我们的域名访问我们的站点如果配置了cdn将无法被访问了。
以下是阿里云帮助文档对防盗链配置的描述:
设置防盗链功能,包括以下参数:
- Referer 白名单。仅允许指定的域名访问 CDN 资源。
- 是否允许空 Referer。如果不允许空 Referer,则只有 HTTP 或 HTTPS header 中包含 Referer 字段的请求才能访问 CDN 资源。
例如,对于一个名为 oss-example 的 Bucket,设置其 Referer 白名单为`https://www.aliyun.com/`。则所有 Referer 为`https://www.aliyun.com/`的请求才能访问 oss-example 这个 Bucket 中的 Object。
到这里就已经配置完成了,你可以尝试在本地的网页上引用该图片路径,发现无法访问,配置成功。
我们可以放心CDN链接流量不会被其他网站盗用了。
有效使用CDN缓存
应用场景
当我们配置好自己的CDN加速站点后,发现我们加载页面的时候会比较慢。
这是为什么呢?明明配置了CDN加速,并且理论上配置后速度应该很快才对,凭什么我的就比较慢呢?
排查问题
稍加思索,我用chrome浏览器打开F12看到
为啥我这么多静态文件加载速度这么慢? 特别是有好几个js文件只有几十kb,为啥加载将近1秒或者1秒以上?
分析问题
根据我的非专业理解分析(PS:图画得有点丑见谅=。=)
根据图可知:
原来在CDN服务器上会去判断该静态文件是否被缓存了,现在我开通阿里云CDN后还没有去配置过任何CDN缓存相关的东西(PS:我最开始以为阿里云会自动为我缓存=。=)。
解决问题
找到配置地点
添加缓存
这里我是配置的目录 代表在我域名下所有的目录都将被缓存在CDN里
当然这里可以根据需要配 文件名后缀 或者目录。
至于过期时间可以根据自己的使用去设置。
使用后效果
可以看到相同的js已经加入CDN缓存后加载时间已经降低到几十ms了,速度已经大大的加快了。
这里需要注意的是:配置好CDN缓存后第一次加载可能还是会比较慢,因为CDN服务器中还没有该文件的缓存,还是要去服务器拉取,此时的速度也是根据服务器带宽来区分的。第二次加载时CDN中已经有缓存了,速度会非常快~
其他配置
在我们配置过程中,我们可以看到性能优化几个字眼(PS:我对性能两个字比较敏感,虽然还有安全配置啥的,但是我个人博客服务器我对安全就不太关注了,毕竟还要付费,哈哈哈)
把能点的都点上把,毕竟压缩文件也能节约流量,降低CDN使用成本。