OSS 解决方案篇-OSS 结合全站加速使用-阿里云开发者社区

开发者社区> 阿里云支持与服务> 正文

OSS 解决方案篇-OSS 结合全站加速使用

简介: 全站加速(DCDN) 与 OSS 是常见的站点动静分离的方式,可以实现将静态资源存储在 OSS 上,并通过 DCDN 加速 OSS 实现静态资源的访问加速效果。如果是动态业务,可以通过最短路由上传回传;

功能描述

首先阐述如果能解决动静态分析的场景

DCDN 支持动态的文件加速规则,用户可以配置配置哪些是静态文件需要缓存,哪些是动态文件不需要缓存。

开启动态加速

  • 开启:可自定义动静态资源加速规则,静态内容使用边缘缓存,动态内容采用最优路由回源,支持三种静态文件匹配方式(URI、后缀、路径)
  • 关闭:无动态内容加速效果,仅保留静态边缘缓存功能

image.png

配置方法

创建 DCDN 域名时,选择 OSS 域名作为原站,在下来框里面可以自动检索出客户的 OSS bucket

回源端口建议使用 443 回源避免被劫持
image.png

回源规则

这个规则默认不用更改,但当原站如果是私有 bucket 权限,客户端不想每次自己计算 OSS signature 签名,那可以把 “私有bucket回源” 功能开启,这样用户不用自己计算签名,通过 DCDN 来自动算签;

image.png

缓存规则配置

用户如果之前配置来静态路由规则后,在缓存规则里面可以配置对应的缓存时间,那动态的文件就直接回源,静态的走本地 cache

image.png

跨域配置

当 DCDN 域名回源到 OSS 时会触发跨域,因为 DCDN 和 OSS是两个完全不同的主站,所以需要在 OSS 上配置跨域;

image.png

image.png

如果客户端请求 DCDN 也是两个不同的主站域名那么在 DCDN 上也要配置;
Access-Control-Allow-Origin
Access-Control-Allow-Headers
Access-Control-Allow-Methods

image.png

开启 OSS 自动刷新功能

用户如果更新 OSS 静态文件后,希望 DCDN 将同名的旧文件从缓存中清理掉,可以开启自动刷新功能。

image.png

FQA

使用 DCDN 和 OSS 后静态文件为强制下载

由于OSS的默认策略在访问3级域名时,会给文件添加attachment属性,导致文件为强制下载。

需要修改 DCDN 的回源HOST,配置为加速域名而不是Bucket域名(即不是为aliyuncs.com结尾的域名,此域名为OSS的默认域名);

访问 OSS 静态文件大小和 DCDN 缓存文件大小不一致

OSS 通过 putObject 等上传方式都是会在 response 头中记录content-length 和 content-MD5 的信息返回给客户端,用户可以根据该信息确定本地下载得到的文件是否与 OSS 服务器端存储的数据是否一致。

image.png

但使用 DCDN 加速 OSS 出现文件大小和 OSS 不一致时可以从一下方面进行排查:

  • 获取 DCDN 上的历史缓存。由于 OSS 上的文件更新而 DCDN 上仍然缓存着历史的旧数据导致的该问题,可以通过刷新 DCDN 缓存解决。
  • DCDN 的智能压缩功能。 DCDN 会对满足特定条件的文件自动做 gzip压缩,当客户端发送的 Request 头有 Accept-Encoding : gzip ,即表示客户端支持 gzip 压缩并且满足CDN智能压缩就会进行压缩,而压缩后就会导致该文件更改为 chunked 编码,将无法获取得到 content-length 。
  • DCDN 的页面优化功能。 DCDN 针对于 html 文件提供了 trim 的功能,即 DCDN 在开启页面优化功能后可以帮助用户自动去掉 html 页面中的空格以及注释,这样可以减少下行流量。但是这就会导致客户端接收到的 content-length 或者 content-MD5 发生变化。
  • HTTP 劫持问题。当如果客户端到 DCDN 的边缘节点或者 DCDN 父层节点回源到源站使用 HTTP 协议时数据传输是非加密的,因此是有可能出现在网络传输的过程中包内容被篡改的情况。这种情况就会导致客户端接收与 OSS 存储内容不一致。该问题可以通过修改为 HTTPS 协议规避该问题。

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

分享阿里云支持与服务团队最佳实践、经典案例与故障排查。

官方博客
文档