当前位置: 首页 > 网络应用技术

如何使用阿里巴巴云CDN来缓存该功能计算上部署的静态网站

时间:2023-03-05 17:10:25 网络应用技术

  简介:为了进一步提高网站的访问速度,我们将使用CDN加速网站,但是最近,阿里巴巴云的功能计算和CDN的合作找到了一个需要额外关注的地方。

  作者:Deng Chao |无服务的开发器开源贡献者

  为了进一步提高网站的访问速度,我们将使用CDN加速网站,但是最近,阿里巴巴云的功能计算和CDN的组合找到了一个需要额外关注的地方。

  然后以我在功能计算[1]上部署的博客站为例,以逐步向您介绍如何使用CDN来计算主机的静态网站来计算主机的静态网站。

  将CDN函数添加到功能

  1)为函数分配域名并添加CNAME记录

  由于我希望最终用户可以通过blog.dengchao.fun访问它,因此您需要将另一个域名blog.xxx.denchao.fun分配给该函数:

  2)添加自定义域名并设置路由

  将分配的域名设置为计算的自定义域名函数:

  由于HTTPS也可以在CDN上设置,并且在函数计算之前无法设置SSL协议版本,因此在此处未打开HTTPS函数。

  3)添加带有“功能计算域名”的源站类型CDN

  接下来,在CDN控制台上创建一个新的加速域名:

  用户最终将通过加速域名blog.dengchao.fun访问我的博客站。业务类型选项不会影响最终的加速效应,并且可以任意选择。

  然后添加一个源站:

  由于函数计算的自定义域名未打开HTTPS,因此需要将源站的端口设置为端口80,并且还可以减少返回源时的响应时间(实际效果是微不足道的)。

  4)添加CDN加速域名CNAME类型的记录

  设置源站点信息并节省后,阿里巴巴云将查看源站的内容。如果批准批准,它将为您提供CDN服务提供商的域名:

  接下来,您需要解决CDN服务提供商提供的域名加速域名:

  添加CNAME记录后,CDN控制台将在一段时间后显示为“配置”状态,然后您可以使用配置加速域名访问它。

  设置CDN缓存

  加速域名不够。否则,每次用户访问加速域名时,都需要从源站提取,因此我们需要在CDN上设置高速缓存以减少次数。

  1)添加缓存到期时间规则

  假设我们希望CDN节点可以缓存1天网站根目录的所有内容,然后我们需要在CDN加速域名的“缓存管理”页面上添加相应的配置:

  当我在这里操作时,我以为设置了缓存,但是在网站运行一段时间后,对CDN的监视发现,缓存命中率总是很低。通过观察浏览器控制台中的网络请求日志,请求标头一一分析,发现了一些异常:源站将缓存控制响应标头设置为公共,max-age = 0。

  2)修复缓存控制的响应标头

  经过仔细检查后,MDN [2]上的高速控制响应标头上的文档,以及在高速缓存到期时间配置上引入阿里巴巴云CDN [3],确认了先前的CDN缓存配置是有缺陷的。(典型的损失。不要阅读文档)

  解决问题后,解决方案的解决方案也非常清楚:只需找到一种删除源站的高速缓存响应标头的方法即可。

  选项1:修改源站HTTP服务器返回的高速缓存响应标头

  由于源站的HTTP服务器将缓存控制响应标头设置为max-age = 0,因此我们可以更改源站的HTTP服务器。

  但是,考虑到我们在函数计算上部署的静态网站是由网站fc插件生成的Express服务器。定期使用,然后我们需要不时检查,根据情况,修补补丁程序,以及执行非常费力。因此,我们不能选择此解决方案。

  选项2:配置CDN,删除源站HTTP服务器返回的高速缓存响应标头

  再次查看该文档,发现Alibaba Cloud CDN提供了配置后源HTTP响应头[4]的功能,该功能包含删除响应标头的功能。因此,我们可以使用此功能让CDN删除delete the the the the the缓存控制响应标头由源站返回。

  配置后,再次在加速域名下观察网络请求的响应标头,并发现确实没有缓存控制:public,max-age = 0响应标头。

  3)效果比较

  由于博客站的数量不高,因此效果并不明显(看不到吗?)。因此,另一个网站的监视屏幕截图,访问量相对较大:

  首先是访问量的比较。从监视数据的角度来看,访问近两天没有显着差异:

  然后是返回源流量的比较,发现退货源流量在删除缓存控制响应标头后大幅下降

  同时,字节命中率和请求命中率已大大提高:

  似乎我们配置的缓存确实生效了。

  在配置了CDN加速域名和缓存到期时间规则后,请记住检查源站的响应标题。如果已经有与源站的响应有关的响应,则在HTTP服务器或CDN上进行调整源站的源站。

  此外,查看更多文档。

  参考链接:

  [1]博客站

  https://blog.denchao.fun/

  [2] MDN上的CACHE-CONTROL响应标头的文档

  https://developer.mozilla.org/zh-cn/docs/web/http/headers/cache-control

  [3]引入阿里巴巴云CDN用于缓存过期时间的配置

  https://help.aliyun.com/document_detail/27136.html#tital-p27-252-g92

  [4]配置返回源HTTP响应标头

  https://help.aliyun.com/document_detail/155769.html

  [5]阿里巴巴云功能计算

  https://help.aliyun.com/product/50980.html

  [6]阿里巴巴云CDN

  https://help.aliyun.com/document_detail/27101.html

  [7]加速原理

  https://help.aliyun.com/document_detail/27101.html#tital-sbn- geq-2ez

  [8]配置返回源HTTP响应标头

  https://help.aliyun.com/document_detail/155769.html

  [9]什么是缓存

  https://help.aliyun.com/document_detail/1225533.html

  [10]配置缓存到期时间

  https://help.aliyun.com/document_detail/27136.html

  [11]缓存规则和优先级

  https://help.aliyun.com/document_detail/27136.html#tital-p27-252-g92

  [12]什么是缓存控制响应标头

  https://developer.mozilla.org/zh-cn/docs/web/http/headers/cache-control

  原始链接

  本文是阿里巴巴云的原始内容,未经许可就无法重印。

  原始:https://juejin.cn/post/7100813686813507592