Caching 在CloudFront上2次点击相同路径时的预期缓存行为

Caching 在CloudFront上2次点击相同路径时的预期缓存行为,caching,amazon-cloudfront,Caching,Amazon Cloudfront,假设我有一个CloudFront发行版,我调用/path1,然后不久又调用/path1。流量将是 第一个请求是CloudFront未命中并转到服务器 第二个请求是CloudFront命中 但是如果有两个平行的点击到CloudFront呢。同时,当第二个请求在第一个请求完成之前到达CloudFront时,CloudFront还没有缓存响应。它会等待第一个请求完成并返回该请求吗?或者两个请求都会命中服务器 当查看我的NGINX日志时,似乎当并行调用到达服务器时,它们都到达服务器。有什么办法可以

假设我有一个CloudFront发行版,我调用
/path1
,然后不久又调用
/path1
。流量将是

  • 第一个请求是CloudFront未命中并转到服务器
  • 第二个请求是CloudFront命中
但是如果有两个平行的点击到CloudFront呢。同时,当第二个请求在第一个请求完成之前到达CloudFront时,CloudFront还没有缓存响应。它会等待第一个请求完成并返回该请求吗?或者两个请求都会命中服务器



当查看我的NGINX日志时,似乎当并行调用到达服务器时,它们都到达服务器。有什么办法可以避免吗?就像一个恶意客户端对同一路径发出太多请求一样,我希望CloudFront只能向服务器发出一个请求并返回相同的响应。可能吗

如果第一个请求仍在为客户端提供服务,则CloudFront尚未缓存它,第一个请求已完成,这意味着CloudFront从源站接收到完整的数据并将其提供给客户端,它会将响应保留在缓存中,并为进一步的请求提供服务

如果您在第一个请求完成之前发出第二个请求,那么cloudfront将错过该请求,您将看到两个请求都到达了cloudfront

然而,如果您谈论的是并行请求的突发,CloudFront有一种方法来处理它们:

“当CloudFront edge位置收到一个对象请求,而该对象当前不在缓存中或该对象已过期时,CloudFront会立即将该请求发送到您的源位置。如果对同一对象的其他请求在原点响应第一个请求之前到达边缘位置,则会出现流量峰值,CloudFront会在向原点转发对该对象的其他请求之前短暂暂停。通常,对第一个请求的响应将在对后续请求的响应之前到达CloudFrontEdge位置。此短暂的暂停有助于减少源服务器上不必要的负载。如果其他请求不相同,例如,您将CloudFront配置为基于请求头或Cookie进行缓存,则CloudFront会将所有唯一请求转发给您的源。”