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

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

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


前言


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


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


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


为函数添加 CDN 功能


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


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


1.png


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


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


2.png


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


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


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


3.png


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


然后添加一个源站:


4.png


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


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


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


5.png


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


6.png


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


设置 CDN 缓存


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


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


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


7.png


本来操作到这里的时候我就以为缓存设置好了,但网站运行了一段时间后观察 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 响应头。


8.png


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


3)效果对比


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


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


9.png


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

image.gif

10.png


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


11.png


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


总结


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


另外,多看看文档。


参考链接:


[1] 博客站

https://blog.dengchao.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#title-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#title-sbn-geq-2ez


[8] 配置回源 HTTP 响应头

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


[9] 什么是缓存

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


[10] 配置缓存过期时间

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


[11] 缓存规则与优先级

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


[12] 什么是 Cache Control 响应头

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control



1分钟Serverless 部署个人网盘


打开卡片复制地址

1 分钟自建一个真网盘

1 步拿到百变指尖陀螺!


12.jpeg


本场景基于 Serverless 应用中心 + 阿里云函数计算 + 开源企业级在线文件管理系统 KodBox 打造,让你仅用 “几次” 点击,拥有一个可随意保存资源、不限速下载、多端使用、与朋友共享资源……的专属个人网盘。


时间:5 月 9 日 - 5 月 20 日(工作日期间)

奖品:每日 200 个百变指尖陀螺

建议:PC 端体验


点击「此处」,一键部署个人网盘!

相关文章
|
缓存 边缘计算 网络协议
CDN加速网站的终极指南:关键策略与实战技巧
内容分发网络(CDN)是现代互联网基础设施的核心,通过全球分布式服务器网络加速内容交付。掌握CDN原理与实践,可显著提升网站速度、安全性和用户体验。本文详解CDN基础、优势、实施步骤及未来趋势,帮助您选择合适方案并优化配置,在数字时代中占据竞争优势。无论是高流量网站还是跨国企业,CDN都是不可或缺的技术工具。立即行动,让您的内容交付更高效!
|
11月前
|
域名解析 网络协议 CDN
怎么使用CDN给你的网站加速?
本文介绍阿里云CDN开通与配置全流程:先开通服务,添加加速域名并设置源站信息,再通过CNAME解析绑定域名。完成配置后,通过ping命令验证CNAME生效情况,实现网站加速。
|
11月前
|
缓存 编解码 弹性计算
使用阿里云CDN与传统网站有什么区别?
阿里云CDN通过全球缓存节点与负载均衡技术,实现用户就近访问,大幅提升网站响应速度,解决网络拥堵问题。相比传统直连源站,CDN将静态资源分发至边缘节点,结合OSS、ECS等服务,广泛应用于网站加速、视音频点播、直播及移动APP内容分发,显著优化用户体验。
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
云上托管 MCP 搭建 AI Agent 将成为趋势。函数计算 FC 目前已经支持开源 MCP Server 一键托管,欢迎体验。
1598 113
|
11月前
|
缓存 监控 安全
提升网站性能的10个CDN配置优化技巧
本文深入解析CDN选型、缓存策略、HTTPS加速、动态内容分发等十大优化方案,涵盖节点覆盖、协议支持、安全防护、边缘计算与多CDN架构设计,助力技术团队提升加载速度40%-60%,降低带宽成本30%-50%,实现持续高性能交付。
856 2
|
12月前
|
缓存 边缘计算 网络协议
如何使用CDN加速给网站加速?
阿里云CDN是基于全球3200+节点构建的分布式网络,能有效分担源站压力,加速网站内容分发,提升访问速度。支持全球覆盖,提供高带宽输出能力,适用于各类静态及动态内容加速。
如何使用CDN加速给网站加速?
|
Serverless Python
借助 serverless 将 MCP 服务部署到云端
本文介绍了如何将 MCP 服务通过 SSE 协议部署到云端,避免本地下载和启动的麻烦。首先,使用 Python 实现了一个基于 FastMCP 的网络搜索工具,并通过设置 `transport='sse'` 启用 SSE 协议。接着,编写客户端代码测试服务功能,确保其正常运行。随后,利用阿里云函数计算服务(FC 3.0)以 Serverless 方式部署该服务,包括创建函数、配置环境变量、添加依赖层以及部署代码。最后,提供了客户端测试方法和日志排查技巧,并展示了如何在不同工具(如 Cherry-Studio、Cline 和 Cursor)中配置云端 MCP 服务。
1981 11
借助 serverless 将 MCP 服务部署到云端
|
存储 缓存 人工智能
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
Tair KVCache 是阿里云推出的面向大语言模型推理场景的缓存加速服务,基于分布式内存池化和分级缓存体系,解决显存墙与带宽瓶颈问题。为万亿参数模型的高效推理提供技术保障,推动 AI 算力进化与规模化应用。
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
MCP(Model Context Protocol)自2024年发布以来,逐渐成为AI开发领域的实施标准。OpenAI宣布其Agent SDK支持MCP协议,进一步推动了其普及。然而,本地部署的MCP Server因效率低、扩展性差等问题,难以满足复杂生产需求。云上托管成为趋势,函数计算(FC)作为Serverless算力代表,提供一键托管开源MCP Server的能力,解决传统托管痛点,如成本高、弹性差、扩展复杂等。通过CAP平台,用户可快速部署多种热门MCP Server,体验高效灵活的AI应用开发与交互方式。
4167 10
|
安全 搜索推荐 Serverless
HarmonyOS5云服务技术分享--Serverless抽奖模板部署
本文详细介绍了如何使用华为HarmonyOS的Serverless模板快速搭建抽奖活动,手把手教你完成从前期准备到部署上线的全流程。内容涵盖账号注册、云函数配置、参数调整、托管上线及个性化定制等关键步骤,并附带常见问题解答和避坑指南。即使是零基础用户,也能轻松上手,快速实现抽奖活动的开发与部署。适合希望高效构建互动应用的开发者参考学习。

相关产品

  • 函数计算