freyo / flysystem-qcloud-cos-v5

💾 Flysystem Adapter for Tencent Cloud COS V5
https://intl.cloud.tencent.com/product/cos?lang=en
MIT License
156 stars 23 forks source link

设置 CDN 域名后 read 方法也不会从 CDN 获取内容 #13

Closed prinsss closed 6 years ago

prinsss commented 6 years ago

即使设置了 filesystems.disks.cosv5.cdn,这个 CDN 域名也只有在 getUrl 方法中使用过,而在获取 Object 内容时依然是从默认的域名 http://cos.{region}.myqcloud.com/ 获取的(不走 CDN 流量很贵)。

https://github.com/freyo/flysystem-qcloud-cos-v5/blob/71d4f914ec6cdee619e5c150269028ad004e5dbc/src/Adapter.php#L311

freyo commented 6 years ago

{bucket}-{appid}.cos.{region}.myqcloud.com 相同地区的腾讯云内部业务使用该域名对 COS 资源进行访问时,免收流量费。

如果你要从 CDN 获取对象内容,建议手动创建临时链接 temporaryUrl 再 GET

prinsss commented 6 years ago

唔,我这边的需求是在非腾讯云的机器上直接将 COS 作为存储后端使用的。因为需要灵活切换 Flysystem Adapter,所以不方便添加专门适配 COS 的代码……

虽然我也可以继承那个 Adapter 再自定义 ServiceProvider,不过可以的话还是希望能在库里直接提供这个功能啦(比如说添加个是否从 CDN 获取内容的配置项)。

freyo commented 6 years ago

1.1.7 已支持从 CDN 读取。更新至 1.1.7 并添加如下配置即可

'cosv5' => [
     //...
     'read_from_cdn' => env('COSV5_READ_FROM_CDN', true),
],
prinsss commented 6 years ago

测试后正常工作,非常感谢!

shiny commented 5 years ago

@freyo 建议完善下配置的说明。比如 read_from_cdn 选项,看了这个 issue 才恍然大悟。