使用 Cloud Storage 和 Cloud CDN 提供视频文件

问题描述 投票:0回答:1

我正在开发一个 Flutter 应用程序,用户可以在其中查看从云存储上传的 mp4 文件。我已经设置了一个全局外部应用程序负载均衡器,其中 Cloud CDN 和我的 Cloud Storage 存储桶作为后端源。我的 flutter 应用程序通过向负载均衡器公开的外部 IP 发送 HTTP 请求来从云存储请求文件。

在 Android 上这效果很好。视频文件加载速度非常快。在 iOS 上,设备会在开始播放之前下载整个文件。在 WIFI 信号上,这会导致 1-5 秒的延迟,而在 5G 上,可能会出现 10-100 秒的延迟。我修改了代码,以便不再通过应用程序负载均衡器,而是直接从云存储请求文件。这样做时,文件加载速度很快(可能有 1 秒延迟),尽管不如彻底 CDN 和利用缓存时加载速度快。

我检查了网络请求,看起来当 AvPlayer 发送第一个字节范围请求(范围字节=0-1)时,云存储返回适当的响应和类型(内容类型:视频/mp4),而对于同一请求云CDN 返回带有年龄、Etag、缓存控制和日期的文本/纯响应。

知道什么会导致云 CDN 返回该响应吗?

google-cloud-storage avplayer flutter-video-player google-cloud-load-balancer google-cloud-cdn
1个回答
0
投票

Cloud CDN 仅缓存具有可缓存内容的响应。此信息与后端配置结合在 HTTP 响应标头中传达。如果 URL 的响应未缓存,请检查该 URL 返回的标头以及后端的 可缓存性

您可以将

curl
命令用作
curl -s -D - -o /dev/null http://example.com/image.png
,这将帮助您分析与 HTTP 响应标头相关的不同类型的场景,例如官方
Cloud CDN 故障排除文档中提到的 Content-Type,Content-Length,Cache-Control,Age,etag

您还可以参考此官方 GCP 文档 更改缓存模式 |云 CDN 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.