Google 处理并发(分块)请求时的 CDN 行为

Google CDN behavior when serving concurrent (chunked) requests

我正在尝试了解 Google CDN 在以下情况下的行为:

选项a:CDN只是将请求传递给后端服务,而忽略了一半的文件已经被服务并且可能已经被缓存了。不可取,因为后端服务将被访问两次并提供相同的数据两次。

选项 b:CDN 将第二个请求放在 "hold",等待第一个请求终止,然后再从其缓存中为客户端 B 提供服务(在这种情况下,请求 B 不会到达后端服务)。好的,但仍然不足为奇,因为客户端 B 在获取任何 http 数据之前会等待 5 秒。

选项 c:CDN 立即提供前半部分 http 块,然后以与请求 A 相同的速度提供剩余的 http 块。理想!

对当前行为有什么想法吗?我们可以做些什么来获得选项 C,这是迄今为止我们的首选选项?

Tnx,祝你有愉快的一天!

让诺

请务必注意,GFE 过去只缓存完整的响应并将每个响应存储为一个单元。因此,当前行为将遵循选项 A。您可以查看 more details 的这篇帮助中心文章。

但是,随着目前处于 Beta 阶段的块缓存的引入,大型响应主体被视为一系列块,每个块都可以独立缓存。大小小于或等于 1 MB 的响应主体可以作为一个单元进行缓存,而无需使用块缓存。大于 1 MB 的响应主体永远不会作为一个单元进行缓存。此类资源要么使用块缓存进行缓存,要么根本不缓存。

只有支持字节范围服务的资源才有资格进行块缓存。 GFE 仅缓存响应其发起的字节范围请求而收到的块数据,并且 GFE 仅在收到指示源服务器支持该资源的字节范围服务的响应后才发起字节范围请求。

更明确地说,一旦Chunk缓存在GA中,您就可以实现您的首选选项C。

关于您最近的查询,不幸的是,目前只有支持字节范围服务的资源才有资格进行块缓存。您绝对可以在 Google Issue Trackers.

为您的用例创建功能请求

好消息是,使用 Cloud CDN 的块缓存现已正式发布,您可以随时查看该功能。