CDN加速文件下载疑惑

正在开发一个软件(不是网站),最初的方案是使用阿里云OSS当存储用户上传的文件,但OSS的下载流量贵啊,看到有CDN这玩意,所以就想了解一下。

目前场景:
用户可以通过软件上传文件到阿里云OSS,其它用户(几十到上百个用户)就可以通过软件下载这个文件了。走的全都是阿里云的OSS。

所以现在想着能不能使用CDN辅助一下,用户上传文件到OSS上之后,CDN把这个文件缓存起来,其它用户下载的时候,直接走CDN的流量,毕竟CDN流量比OSS流量便宜。

CDN疑惑:
1:因为不是所有的文件都放到CDN里面,所以能不能通过API或是什么设置指定某些文件可以放CDN?
2:如果OSS上的文件删除了,CDN那边能及时删除吗?这个可以通过代码控制吗?
3:这样的设想能不能实现:用户访问CDN,但是CDN上面没有这个文件,然后CDN就去OSS上面找,找到了之后就缓存起来,然后CDN再把文件给请求的用户。这个设想不知道对不对?

题外话:网上很多下载站,他们是不是也是通过CDN这样的方式实现的呢?

  1. CDN 可以指定对某些目录或者文件后缀名的特定文件进行缓存,自然也可以通过阿里云的 API 来调整需要缓存的内容。
  2. CDN 的刷新不宜过于频繁,你可以通过调用阿里云 API 强制刷新某些资源,但最好的方法是你自己的后端记录一下文件信息和版本信息,或给文件名加个版本号,总之就是要减少 CDN 缓存更新的次数。不过 CDN 可以设置一些文件的 Max-Age,到期了他自己也会删掉。CDN 更加适合静态资源,如果你确实需要放一些动态资源在上面,可以让 CDN 不缓存,这样每次获取的都会是最新的;但是由于流量仍然从 CDN 走,所以 CDN 的流量费还是要出的。
  3. 对,这就是 CDN 的流程,对于没有缓存的文件,CDN 会回源站获取资源,这一步也称作“回源”。回源的时候,CDN 从 OSS 下载的流量不要钱,但是 OSS 却得按正常的流量计费。
    题外话:你基本说的没啥问题,我也只用过浅浅的试过一下 CDN,可能说的也不太对,不足之处建议还是多看看文档罢。