CDN加速OSS以及相关问题

本文涉及的产品
对象存储 OSS,20GB 3个月
.cn 域名,1个 12个月
对象存储 OSS,内容安全 1000次 1年
简介: 本文主要介绍CDN加速OSS的原理、入门配置以及常见问题。

背景信息

OSS源站上存储的静态资源包括静态脚本、图片、附件和音频/视频。当终端用户请求访问或下载静态资源时,CDN对OSS源站上的静态资源进行加速,源站上的资源缓存到CDN的加速节点,系统自动调用离终端用户最近的CDN节点上已缓存的资源。加速OSS架构如下图所示。
p50521.png


架构优势

CDN加速OSS的优势如下
(1)用户访问网站资源,全部通过CDN,降低源站压力。
(2)使用CDN流量,单价低于OSS直接访问外网流量。
(3)资源从距离客户端最近的CDN节点获取,减少网络传输距离,保证静态资源质量。


常见问题

一. 如何设置缓存自动刷新
CDN加速OSS的场景下,在OSS的Bucket中修改了Object,使用CDN加速域名访问得到的Object仍是更新前的旧版本,必须在CDN中手动刷新后才能访问到新版本的Object。

这是因为Bucket中的Object更新了,但是CDN中该Object的缓存未到期,所以访问的时候还是老的资源。用户可以开启CDN缓存自动刷新功能。开启此功能后,若Object有更新,OSS会自动刷新CDN上的缓存,从而实现文件更新时缓存自动刷新。具体可以登录OSS控制台,在对应Bucket下选择【传输管理】>【域名管理】界面,设置开启CDN缓存自动刷新。
image.png


二. 如何解决静态文件强制下载
出于安全考虑,从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件,即mimetype为以下值:
image/jpeg、image/gif、image/tiff、image/png、image/webp、image/svg+xml、image/bmp、image/x-ms-bmp、image/x-cmu-raster、image/exr、image/x-icon、image/heic,扩展名包括:jpg、jpeg、jpe、png、tif、tiff、gif、svg、bmp、ico、ras、dib、svgz、webp、bm、jfif、x-png、exr和heic时,Response Header中会自动加上 Content-Disposition:'attachment=filename;'。即从浏览器访问图片类型文件时,会以附件形式进行下载。用户使用自有域名访问OSS的请求,Response Header中不会加上此信息。解决方案如下:
(1)检查并设置Bucket是否绑定CDN加速域名,详情请参见绑定CDN加速域名
(2)检查并配置CDN配置的回源Host为用户的加速域名,而不是源站域名。如果设置源站域名(也就是OSS的域名),则CDN回源的时候所带的Host就是OSS域名,这样会导致OSS返回强制下载的HTTP头最终导致资源直接下载。
image.png

注:
如果访问URL仍然为强制下载,则可能是CDN缓存了强制下载的HTTP头,需要在CDN控制台刷新URL。另外需要检查OSS源文件的HTTP头内Content-Type的值是否正确,详情请参见 OSS如何设置Content-Type

三. CDN加速导致OSS配置的CORS跨域失效
使用CDN加速OSS跨域访问失败,原因是可能存在这样的场景:
第一个用户访问CDN时,没有发起跨域访问,然后CDN回源到OSS的时候OSS返回了不带跨域头的Respons Headers信息,并且被CDN缓存下来了。 当第二个用户访问时,发起了跨域请求,但是由于CDN有缓存,直接把之前缓存下来的不带跨域头的Respons Headers信息返回了,导致本次跨域请求失败。因此建议使用CDN加速OSS时,直接在CDN上去配置跨域规则,具体请参考CDN如何配置跨域资源共享(CORS)


四. CDN加速OSS资源返回403状态码
为了防止OSS被盗链,保护OSS的资源安全,用户把OSS的Bucket权限设置为私有权限,这样就需要带了签名参数的URL去访问。如果CDN加速OSS的访问URL,不带OSS签名参数的话,就会导致403。这种情况下可以开启阿里云OSS私有Bucket回源授权。当开启私有OSS Bucket回源授权后,即表示开启CDN对所有Bucket的只读权限,CDN在回源的时候会计算OSS的签名参数,从而可以从OSS上正常获取资源。


五. CDN加速OSS访问静态托管页面返回403

可以通过Network下获取403请求的Response Headers信息去查看对应的错误信息,如果出现如下错误,说明是开启私有Bucket回源授权的情况下访问了OSS的静态首页。需要注意,目前CDN的私有Bucket回源功能和OSS的静态网站托管功能冲突,无法一起使用。

 You are forbidden to list buckets

image.png

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
6月前
|
存储 安全 API
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
283 2
|
存储 API 对象存储
使用对象存储OSS实现内容分发加速
通过本教程的操作,您可以在OSS中创建bucket并上传数据,可以开通OSS传输加速对OSS数据进行加速访问,从而为游戏服务器分担下载请求,并为用户带来加速体验。
11167 25
使用对象存储OSS实现内容分发加速
|
1月前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5440 16
|
2月前
|
安全 CDN
阿里云CDN产品解读及全站加速在游戏行业的最佳实践!
阿里云CDN(内容分发网络)为全球用户提供快速、稳定、安全的内容分发加速服务,显著提升访问响应速度和成功率
|
5月前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
|
6月前
|
缓存 API 对象存储
一看就懂:我是如何使用OSS提供的CDN服务的?
一看就懂:我是如何使用OSS提供的CDN服务的?
387 1
|
11月前
|
对象存储 开发者
【获奖名单公示】1024·云上见 使用对象存储OSS实现内容分发加速
仅展示获取实物奖品用户,公示截止至12月14日。
490 1
|
存储 SQL JSON
使用SLS统计分析三方CDN回源OSS月95带宽实践
本文介绍通过使用阿里云日志服务SLS,对存储在SLS中的三方CDN回源阿里云OSS的监控日志数据,进行自定义查询分析之后得到按照不同运营商、不同业务类型(CND)纬度下,回源OSS的带宽月95量级数据,用于业务统计分析。
475 0
|
6月前
|
存储 缓存 前端开发
使用CDN来加速OSS上存储的文件资源分发
本文为真实设备电商行业的实践,在网站有大量产品图片上传的场景下,用OSS配合CDN加速,提高了用户的访问速度、站点稳定性,并且提供了节省成本的思路。
726 1
使用CDN来加速OSS上存储的文件资源分发
|
移动开发 Java 测试技术
访问 cdn、oss 跨域问题
背景: 经常遇到有跨域的问题,老生长谈,却又屡禁不止,谈到跨域我们就了解下它是什么? 一句话简单说明 一个资源请求一个其它域名的资源时会发起一个跨域 HTTP 请求 (cross-origin HTTP request)。
4431 0