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

测试

失败返回:

预览

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


源码下载

往上