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

功能描述

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

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

开启动态加速

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

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

配置方法

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

回源端口建议使用 443 回源避免被劫持
OSS 解决方案篇-OSS 结合全站加速使用

回源规则

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

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

缓存规则配置

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

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

跨域配置

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

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

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

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

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

开启 OSS 自动刷新功能

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

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

FQA

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

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

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

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

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

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

但使用 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 协议规避该问题。
上一篇:C#:通过NuGet程序包下载CefSharp来加载谷歌浏览器


下一篇:Spring中的资源加载策略