我试图了解 Google CDN 在以下情况下的行为:
假设我有一个提供分块 http 数据的后端服务。为了便于解释,我们假设服务单个请求最多需要 10s
假设客户端 A 通过 CDN 请求文件,并且该文件当前未缓存在 CDN 中。该请求将转到后端服务,该服务开始提供文件。客户端 A 将立即开始接收 HTTP 块
5s 后,另一个客户端 B 请求相同的文件。我可以设想 3 种可能的行为,但我不知道如何通过 CDN 配置来控制它:
选项 a:CDN 只是将请求传递给后端服务,而忽略文件的一半已经被服务并且可能已经被缓存。不可取,因为后端服务将被访问两次并两次提供相同的数据。
选项 b:CDN 将第二个请求置于“暂停”状态,等待第一个请求终止,然后再从其缓存中为客户端 B 提供服务(在这种情况下,请求 B 不会到达后端服务)。好的,但仍然不令人惊讶,因为客户端 B 在获取任何 http 数据之前会等待 5 秒。
选项 c:CDN 立即提供前半部分 http 块,然后以与请求 A 相同的速度提供剩余的 http 块。理想!
关于当前行为的任何想法?我们可以做些什么来获得选项 C,这是迄今为止我们的首选选项?
Tnx,祝你有美好的一天!
让诺