如何使用阿里云 CDN 对部署在函数计算上的静态网站进行缓存

简介:为了进一步提升网站的访问速度,我们会使用 CDN 对网站进行加速,但是最近在调试阿里云的函数计算和 CDN 的配合使用时发现了一个需要额外注意的地方。

作者:邓超 | Serverless Devs 开源贡献者

前言

为了进一步提升网站的访问速度,我们会使用 CDN 对网站进行加速,但是最近在调试阿里云的函数计算和 CDN 的配合使用时发现了一个需要额外注意的地方。

如何使用 CDN 对部署在函数计算上的静态网站进行缓存

那么以我部署在函数计算上的博客站[1]为例,逐步地向大家介绍如何使用 CDN 对函数计算托管的静态网站进行缓存。

为函数添加 CDN 功能

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

由于我希望最终用户能通过 blog.dengchao.fun 来进行访问,因此需要给函数分配一个不同的域名 blog.xxx.dengchao.fun:

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

将分配的域名设置到函数计算的自定义域名功能中:

因为 CDN 上也可以设置 HTTPs,而且函数计算之前不能设置 SSL 协议版本,因此这里没有开启 HTTPS 功能。

3) 添加源站类型为 "函数计算域名" 的 CDN

接下来到 CDN 控制台上新建一个加速域名:

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

然后添加一个源站:

由于函数计算的自定义域名没有开启 HTTPS,所以源站的端口需要设置为 80 端口,同时也可以减少回源时的响应时间 (实际效果微不足道)。

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

设置完源站信息并保存后,阿里云会对源站内容进行审核,审核通过的话就会提供一个 CDN 服务供应商的域名给你:

接下来你需要将你的加速域名解析到 CDN 服务商提供的域名上:

添加好 CNAME 记录后,CDN 控制台上过一会儿就会显示为 "已配置" 状态,然后你就可以使用配置好的加速域名进行访问了。

设置 CDN 缓存

光配置好加速域名还不够,不然用户每次访问加速域名都需要从源站拉取数据,因此我们需要在 CDN 上设置一下缓存,减少回源次数。

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

假设我们希望 CDN 节点能够对网站根目录下的所有内容都缓存 1 天,那么我们需要在 CDN 加速域名的缓存管理页添加对应的配置:

本来操作到这里的时候我就以为缓存设置好了,但网站运行了一段时间后观察 CDN 的监控却发现缓存命中率一直很低。通过观察浏览器控制台里的网络请求日志,逐个请求头进行分析,最终发现了一点异常:源站将 Cache-Control 响应头设置为了 public,max-age=0 。

2) 修复 Cache-Control 响应头

仔细查看了 MDN 上对于 Cache-Control 响应头的文档[2],以及阿里云 CDN 对于缓存过期时间配置的介绍[3] 后,确认了之前的 CDN 缓存配置存在缺陷。(典型的不看文档吃大亏)

定位好问题以后,解决思路也很清晰了:想办法删掉源站的 Cache-Control 响应头就好了。

方案一:修改源站 HTTP 服务器返回的 Cache-Control 响应头

既然源站的 HTTP 服务器将 Cache-Control 响应头设置成了 max-age=0 ,那我们把源站的 HTTP 服务器改一下不就好了。

但考虑到我们部署在函数计算上的静态网站是由 website-fc 插件生成的 Express 服务器进行托管的,如果修改的话,需要从本地的 website-fc 插件源码入手进行调整,但 website-fc 插件可能不定期更新, 那我们就需要不定期的进行检查,视情况重新打补丁,执行起来很费力。因此我们不能选用这个方案。

方案二:配置 CDN,删除源站 HTTP 服务器返回的 Cache-Control 响应头

再次查看文档发现阿里云 CDN 提供了 配置回源 HTTP 响应头[4]的功能,其中包含了删除回源响应头的功能。因此我们可以借助这个功能,让 CDN 删除掉源站返回的 Cache-Control 响应头。

配置好以后, 再次观察加速域名下网络请求的响应头,发现确实没有 Cache-Control:public,max-age=0 的响应头了。

3)效果对比

由于博客站的访问量并不高,效果不明显 (简直看不出来😂)。因此截取了另一个访问量相对较大的网站的监控截图:

首先是访问量对比,从监控数据来看近两天没有显著的访问量差异:

然后是回源流量对比, 发现删除 Cache-Control 响应头以后回源流量显著下降

同时字节命中率与请求命中率都有显著的提升:

看来我们配置的缓存确实生效了。

总结

配置好 CDN 加速域名和缓存过期时间规则以后,记得检查源站的响应头。如果源站的响应中已有缓存控制相关的响应头,那么视情况在源站的 HTTP 服务器上或 CDN 上进行调整。

另外,多看看文档。

参考链接:

[1] 博客站

Post | 欢迎来到 DevDengChao 的博客

[2] MDN 上对于 Cache-Control 响应头的文档

Cache-Control - HTTP | MDN

[3] 阿里云 CDN 对于缓存过期时间配置的介绍

配置缓存过期时间 - CDN - 阿里云

[4] 配置回源 HTTP 响应头

配置回源HTTP响应头 - CDN - 阿里云

[5] 阿里云 函数计算

函数计算 - 帮助中心 - 阿里云

[6] 阿里云 CDN

什么是阿里云CDN - CDN - 阿里云

[7] 加速原理

什么是阿里云CDN - CDN - 阿里云

[8] 配置回源 HTTP 响应头

配置回源HTTP响应头 - CDN - 阿里云

[9] 什么是缓存

什么是缓存 - CDN - 阿里云

[10] 配置缓存过期时间

配置缓存过期时间 - CDN - 阿里云

[11] 缓存规则与优先级

配置缓存过期时间 - CDN - 阿里云

[12] 什么是 Cache Control 响应头

Cache-Control - HTTP | MDN

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

放弃支持 SQL 惹争议,CEO:你可以怪我!

整理 | 苏宓出品 | CSDN(ID:CSDNnews)作为关系型数据库的标准语言,SQL 凭借着功能丰富、使用方便灵活、语言简洁等特性备受欢迎,行业中如 MySQL、Oracle、SQL Server、Sybase、Informix 等主流数据库都将 SQL 作为其标…

解决方案|致拓T8数字化ERP

简介:通过快速构建敏捷ERP系统,实现从销售到财务的全流程闭环管理,助力企业数字化升级。 「致拓T8数字化ERP」解决方案聚焦业财一体,助力企业卓有成效地提升经营收益,赋能企业个性化数字生产管理。本解决方案由上海致…

携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”

简介:2022阿里云视觉计算私享会:加速虚拟与现实的交互。 引言:2022年互联网行业里XR、数字孪生、虚拟现实等领域再次“翻红”、新旧概念频出,不少人相信这些技术将给当下的互联网行业乃至传统行业带来翻天覆地的变化。虽然XR的应…

六大挑战下,如何利用云原生数据战略打造数据驱动型企业?

在刚刚落幕的2022亚马逊云科技中国峰会上,亚马逊云科技大中华区战略业务发展部总经理顾凡带来《亚马逊云科技 成为探路者,成就探路者》主题演讲,总结了数据驱动型企业面临的六大挑战,并提供了解决思路。IDC预测,仅在20…

宜搭5月更新:跨应用数据读写能力升级,AI组件内测开放

简介:表单、权限管理、AI组件等功能上新啦~ 本次,我们带来了表单、权限管理、数据管理、平台管理权限、组件等功能的升级。 表单 支持跨应用数据查询 在使用组件数据联动、关联其他表单数据、关联表单组件数据筛选/数据填充等功能时&…

阿里云张新涛:异构计算为数字经济提供澎湃动力

简介:阿里云弹性计算在视觉计算上的应用实践分享。 图:阿里云弹性计算产品专家-张新涛 5月11日,在“2022阿里云视觉计算私享会”上,阿里云弹性计算产品专家张新涛为大家带来了题为《阿里云弹性计算在视觉计算上的应用实践》的主题…

提升Java字符串编码解码性能的技巧

简介:常见的字符串编码有LATIN1、UTF-8、UTF-16、GB18030,他们各有各的特点,且之间的转换比较复杂。本文将为大家介绍提升Java字符串编码解码性能的技巧。 作者 | 温绍锦 (高铁) 来源 | 阿里开发者公众号 1 常见字符串编码 常见的字符串编码…

BladeDISC 0.2.0更新发布

简介:在BladeDISC正式开源三个月后,我们发布了0.2.0版本,该更新包含了大量的性能优化与功能增强。 在BladeDISC正式开源三个月后,我们发布了0.2.0版本,该更新包含了大量的性能优化与功能增强。 BladeDISC是目前业界领…

智能logo免费体验|网站Logo这样设计搜索排名跟着提升

简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名。今天分享下如何设计一款实用的网站logo。阿里云智能logo设计,在线免费体验logo制作:https://l…

记一次 JMeter 压测 HTTPS 性能问题

简介:在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。 作者:拂衣 问题…

阿里巴巴在 Envoy Gateway 的演进历程浅析

简介:最近阅读 《Envoy Gateway 来了》这篇文章,深感 Envoy 强大的可扩展性和基于 Envoy Gateway 带来的易用性,在 K8s 架构下,Envoy 重新定义了网关的定位和能力,被誉为云原生网关,甚至被称之为下一代网关…

2022华为开发者大赛北区决赛在1024程序员节北京峰会成功举行

10月24日,“2022 长沙中国 1024 程序员节”北京峰会于北京经开区国家信创园成功举办。聚焦“软件新时代 开源创未来”主题,北京峰会开展“会、赛、展、趴”四大环节。2022 华为开发者大赛云应用创新赛道作为华为 ICT 领域面向云赛道的顶级赛事&#xff0…

阿里云专利缴费小程序丨如何在一分钟为多项专利缴费?

简介:本文为用户介绍快速专利缴费的方法。 对于一家科技公司来说,手握多项专利是十分常见的事情。但这却也让相关负责人有点头疼。 “我们公司名下有十多件专利,从14年到现在大概每年申请了一两个专利。类型的话发明专利、外观专利、实用新…

SysAK 应用抖动诊断篇—— eBPF又立功了 | 龙蜥技术

简介:且看 SysAK 是如何打造一款性能开销不大、安全可靠、且灵活的关中断检测工具。 文 / 系统运维 SIG 编者按:还记得曾经风靡一时的狄仁杰探案系列之《他抖任他抖,IO诊断在我手》、《netinfo:揭开网络抖动面纱的神器》、《core…

性能提升 57% ,SMC-R 透明加速 TCP 实战解析 | 龙蜥技术

简介:SMC-R 是如何加速 TCP 应用? 编者按:TCP 协议作为当前使用最为广泛的网络协议,场景遍布移动通信、数据中心等。对于数据中心场景,通过弹性 RDMA 实现高性能网络协议 SMC-R,透明替换应用 TCP 协议&…

2022云管云网大会丨阿里云孙成浩:构建万物互联的智能云网络

简介:2022年5月19日,由中国信息通信研究院(以下简称“中国信通院”)和中国通信标准化协会联合主办的“2022云管和云网大会”通过线上直播方式成功召开。大会以“新云管 新云网”为主题,工业和信息化部信息技术发展司信…

未来两年,阿里云20%新增算力将使用自研CPU

11月3日,阿里巴巴在2022云栖大会上宣布,自研CPU倚天710已大规模应用,阿里云未来两年20%的新增算力将使用自研CPU,这是阿里算力攻坚的重要突破。目前,倚天710已在阿里云数据中心大规模部署,并以云的形式服务…

PolarDB-X迎来开源后首个重大版本升级,2.1版本新增5大特色功能

简介:2022 年 5 月25日,阿里云开源 PolarDB-X 升级发布新版本!PolarDB-X 从 2009 年开始服务于阿里巴巴电商核心系统, 2015 年开始对外提供商业化服务,并于 2021 年10月正式开源。本次发布是开源后首个重大版本升级&am…

做ToB软件质量保障的这两年

简介:自己算是阿里的老兵了,从实习开始一直投身在 toB 业务的质量保障领域内,不能说是资深的专家,但所经历的、感受的业务特点和体会还是具有一定的代表性,希望能通过这篇文章,总结一下过往,并能…

成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用

简介:人们关注 wolai 独特的功能和舒适的用户的用户体验,更关注实现这些背后的技术架构。在一个晴朗下午,我们邀请了 wolai.com 的创始人马锐拉,跟我们聊聊 wolai 背后的 Serverless 架构。 作者:马锐拉 | wolai.com …