原因:
阿里云的OSS外网流量太大,花费太高。可以做一下缓存控制。
方式:
普通上传的文件,通过阿里云的域名访问时有缓存的,如下返回304 Not Modified
。
但是通过自己的域名去访问,后台通过API去获取文件就没有缓存。如下:
如果我直接用nginx去后台,转发到阿里云的域名获取文件。也是可以缓存的。
问题就在与我们通过API去获取文件的时候,要控制response是返回文件内容,还是返回304。
根据阿里云文档通过OSS API的GetObject接口下载文档,也是支持If-Modified-Since
,If-Match
,If-None-Match
等缓存请求头的。如下:
https://help.aliyun.com/document_detail/31980.html?spm=a2c4g.11186623.2.10.3b0125d1YAhtjx#reference-ccf-rgd-5db
如果我们自己写API去下载文档,就得把前端关于缓存的请求头处理一下,传递给OSS,并在response中返回对应的响应头给前端。 (如果没有敏感的文档下载,最好是做nginx代理转发下载请求。)
一些链接地址:
官方文档,上传文件可以做http Cache-Control:https://help.aliyun.com/document_detail/31859.html?spm=a2c4g.11186623.2.31.737c718bjxiPBK#concept-lkf-swy-5db
参考文档: https://www.jianshu.com/p/65710ab69c3b
https://developers.weixin.qq.com/community/develop/doc/000404946842982474490fead51000?_at=1560029220950