基于 FC 的 GitHub 文件下载 API

基于 FC 的 GitHub 文件下载 API

方案

一、传输加速下载

OSS、FC 位于美国弗吉尼亚,用户通过传输加速域名进行下载文件。

产品 名称 价格
OSS 存储容量费用 0.126 元/GB/月
外网流出流量费用 0.48 元/GB
传输加速费用 1.25 元/GB

二、OSS 下载

OSS、FC 位于中国香港,用户通过 OSS 直接下载文件。

产品 名称 价格
OSS 存储容量费用 0.136 元/GB/月
外网流出流量费用 0.75 元/GB

三、CDN 下载

OSS、FC 位于中国香港,用户通过 CDN 中国大陆加速进行下载文件。

产品 名称 价格
OSS 存储容量费用 0.136 元/GB/月
CDN 回源流量费用 0.75 元/GB
CDN 流量费用 0.24 元/GB

上面三个是我想到比较优的方案,具体选择哪个方案还是需要进一步进行测试。

测试数据

FC 上传、下载测试:

测试文件大小为 130 mb 。

地域 上传 下载
美国弗吉尼亚 2.80 s 9.87 s
中国香港 2.60 s 13.11 s

OSS 外部下载测试:

名称 地域 峰值
OSS 直接下载 美国弗吉尼亚 50 kb
OSS 直接下载 中国香港 10.4 mb
传输加速 美国弗吉尼亚 9.1 mb
CDN 中国大陆 中国香港 10.5 mb

我的网络是广东汕头电信,通过有线网卡进行测试,上面参数是肉眼观察到的峰值。

分析

从上面方案内容、价格和测试数据来看:

名称 方案一 方案二 方案三
费用 高 低 低
流程 少 少 多
抓取速度 快 慢 慢
适合 土豪 单文件频率低 单文件频率高

部署

这里我选择方案二进行部署,代码是支持三个方案的。

说明

程序只支持两个地方链接的下载。

OSS

  1. 创建一个香港地域存储桶

FC

  1. 创建一个香港地域 HTTP 函数,语言为 PHP,内存 128 MB,超时时间 600 秒,支持 POST 请求。
  2. 配置服务页面添加 AliyunOSSFullAccess 权限。
  3. 在刚刚创建的函数页面上传代码,代码压缩包在文章底部。
  4. 回到函数概览页,配置初始化入口。函数初始化入口值为 index.initializer 。
  5. 配置函数环境变量,具体参数看下表。

环境变量:

名称 类型 是否必需 描述
oss_bucket string 是 存储桶
cdn_domain string 否 CDN 域名,方案三必需
has_accelerate bool 否 是否使用传输加速,方案一必需

备注:

  1. cdn_domain 和 has_accelerate 同时存在只会生效 CDN 。
  2. 采用方案三需要前往 CDN 控制台对该域名开启 HTTPS 和 私有 Bucket 回源 。
  3. FC 上传到 OSS 走的是内网,所以要求 FC 和 OSS 在同一地域内。
  4. 由于 FC 使用限制,临时磁盘空间默认为 512 MB,需要下载大文件需挂载 NAS 然后切换临时目录。

测试

失败返回:

预览

地址:https://tools.hongfs.cn/github_download


源码下载

往上