方案
一、传输加速下载
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
- 创建一个香港地域存储桶
FC
- 创建一个香港地域 HTTP 函数,语言为 PHP,内存 128 MB,超时时间 600 秒,支持 POST 请求。
- 配置服务页面添加
AliyunOSSFullAccess
权限。 - 在刚刚创建的函数页面上传代码,代码压缩包在文章底部。
- 回到函数概览页,配置初始化入口。函数初始化入口值为
index.initializer
。 - 配置函数环境变量,具体参数看下表。
环境变量:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
oss_bucket | string | 是 | 存储桶 |
cdn_domain | string | 否 | CDN 域名,方案三必需 |
has_accelerate | bool | 否 | 是否使用传输加速,方案一必需 |
备注:
cdn_domain
和has_accelerate
同时存在只会生效 CDN 。- 采用方案三需要前往 CDN 控制台对该域名开启 HTTPS 和 私有 Bucket 回源 。
- FC 上传到 OSS 走的是内网,所以要求 FC 和 OSS 在同一地域内。
- 由于 FC 使用限制,临时磁盘空间默认为 512 MB,需要下载大文件需挂载 NAS 然后切换临时目录。
测试
失败返回:
预览
地址:https://tools.hongfs.cn/github_download