2020.3.28记录

位置导航:首页服务器相关 /  每日调试记录


1、日历使用阿里wp框架+阿贝图片外链+百度云CDN

阿里上传带宽:1M;

又拍CDN免费额度:0.3G/日存储+0.3G/日CDN流量+1万次https请求量/日;

阿贝云上传带宽:5M;

百度云CDN免费额度:不限量日存储+ 10G/日CDN流量+ 不限量http/https请求数

国内外各CDN的比较详见另一篇文章:CDN是什么,如何正确使用CDN

2020.3.23

开通https://gallery.qimumu.top专属日历,全站资源放在阿里云服务器上

效果:访问速度贼慢,每次加载一张图片要一秒,加载一个月的30张日历大概要30-40秒。

2020.3.24

申请开通百度云CDN基础版,将日历站点的uploads目录全部缓存

效果:不同地区的访客第一次访问网站的时候还是很慢

原因:

1、CDN节点不会主动缓存源站资源

提交工单问客服之后才知道原来CDN节点并不会主动缓存源站的内容,而是在用户访问的时候,用户的请求先提交到CDN节点,CDN节点发现并没有用户需要的资源之后,再把请求转发到源站,也就是回源访问。这样用户需要的资源就从源站通过CDN节点转发给用户,此时CDN节点也会相应的把刚转发的资源缓存到CDN节点。

在CDN节点缓存内容有效期内,当该地区又有访问资源的请求时,因为节点已经缓存了相应的资源,所以这时CDN节点会将缓存的资源返回用户,而不需要回源(此时用户状态返回304而不是200 ) ,由于CDN节点的上传流量比源站的配置好很多,而且比起源站,CDN节点离用户更近,这样就达到了加快响应速度以及缓解源站压力的效果 。

说到这应该就能理解,虽然CDN用处很大,但是对第一个访问的用户仍然不友好。 当然CDN的作用更多,比如隐藏源站IP、防御DDoS攻击等,一般用户用不到。

我们举个例子,比如你的服务器在杭州,百度云CDN在北京有一个节点A,在武汉有一个节点B,假设A、B节点都还没有缓存杭州源站的资源,且缓存资源不会过期。

当一个北京的用户a1访问我的网站时,请求会先转发到北京的A节点,A节点发现自己没有北京用户想要的资源,于是将请求转发给杭州源站,杭州源站再把资源通过北京节点A转发给北京用户a1,同时资源会缓存在A节点。

此时当有第二个北京用户a2访问我的网站时,A节点发现自己已经缓存了a2想要的资源,于是直接将缓存的内容发给a2,就不需要再去杭州服务器去取,这样就达到既节省用户a2的时间,又不会对杭州源站产生压力。

2、CDN节点不会自动全国同步

还是按刚才的例子来说,北京用户a1访问之后,资源被缓存在A节点,当a2用户访问时,A节点直接将缓存的资源发给a2而无需回源。然而此时如果武汉用户b1访问网站时,还需要重新回源,原因是A节点的缓存数据并不会自动同步到武汉的B节点。

如果CDN无法做到同步的话,节点越多,反而效果更差

2020.3.25

发布至空间,短时间访问人数剧增,图片根本加载不出来,用户体验极差

2020.3.26

薅到了阿贝云服务器,带宽5M,准备将日历站点的图片url转移到阿贝云,具体操作如下:

1、阿贝云服务器安装LNMP,建立站点,根目录下新建路径:wp-content/uploads/2020/03

2、把日历原图、缩略图全部转移至该目录下

3、使用mysql语言统一替换gallery站点图片url至acc.gallery

测试:

访问日历网站,其中的图片url已经成为了替换好的站点地址,remote address也是阿贝的IP

2020.3.27

又出现了问题。

测试发现图片根本不缓存,每次都要回阿贝云源站获取图片,我以为是第一次访问的原因,刷新了几次,清空浏览器缓存再刷新,还是每次都要回源。

思考之后发现了问题,因为gallery站点使用的是百度云CDN,在CDN控制台设置的是加速gallery站点下的uploads目录,然而图片url已经更改成acc.gallery,如果想要使用CDN的话,还要对缓存规则进行更改,把加速gallery站点下的uploads目录改成加速acc.gallery站点下的uploads目录。

因为之后可能还会更改回去,所以我换了一种操作,直接使用泛域名,缓存*gallery站点下的uploads目录,设置如下:

测试:

状态304,且提示HIT,说明已经缓存成功。因为百度云CDN用的是国外cloudflare(简称cf)的技术,所以会跟cf提供的CDN有一样的提示。

2020.3.28

百度云CDN控制台有一个新功能,叫做“资源预取”

根据官方介绍,这种功能意思是在用户访问网站之前,提前把源站的内容缓存至各CDN节点,也就是用户访问的时候不再需要回源。

看起来这个功能是解决我3.24号提出的两个问题的,去测试了一下。

拿https://acc.gallery.qimumu.top/wp-content/uploads/2020/03/1-31.jpg这个图片为例,我提交了这个url,按照官方说明,应该是CDN节点主动去源站获取我这张图片缓存至各个节点,解决“第一个用户访问需要回源等待”的问题,然而测试时,却出现如下情况:

提示还是需要回源获取,看来百度云CDN的“资源预取”只是个实验性功能,正在提交工单解决。

——————–<2020.4.2更新>——————-

决定弃用这个功能了,客服也不懂。

评论

还没有任何评论,你来说两句吧

发表评论

本网站由又拍云提供CDN加速/云存储服务.