标签: fastly

用于提供“陈旧”内容的 CDN 支持/配置,在后台刷新

目标

始终提供来自 CDN EDGE 缓存的内容,无论内容多么陈旧。尽可能在后台刷新它。

问题

我有一个NextJS应用程序,它在服务器端呈现一些 React 组件并将它们交付给客户端。对于这个讨论,让我们只考虑我的主页,它是未经身份验证的,对每个人都是一样的。

我想要的是将服务器呈现的主页缓存在 CDN 的 EDGE 节点上,并尽可能多地或始终从该缓存中为终端客户端提供服务。

从我读到的内容来看,CDN(如 Fastly)正确支持缓存相关的标头设置,例如Surrogate-Control并且Cache-Control: stale-while-revalidate应该能够做到这一点,但实际上,我没有看到它像我期望的那样工作。我看到的是:

  • 请求错过缓存并在先前的请求应该预热它时返回到源
  • 请求从缓存提供,但在源发布新内容时永远不会更新

例子

考虑以下时间线:


[T0] - Visitor1 请求www.mysite.com- CDN 缓存完全冷,因此请求必须返回我的源(AWS Lambda)并重新计算主页。返回带有标头Surrogate-Control: max-age=100和 的响应Cache-Control: public, no-store, must-revalidate。然后访问者 1 提供了主页,但他们不得不等待高达 5 秒钟!呸!愿没有其他游客遭受同样的命运。

[T50] - 访问者 2 请求www.mysite.com- CDN 缓存包含我的文档并立即将其返回给访问者。他们只需要等待 40 毫秒!惊人的。在后台,CDN 从我的源重新获取最新版本的主页。原来它没有改变。

[T80] -www.mysite.com向主页发布新内容,使任何缓存的内容真正过时。该网站的V2现已上线!

[T110] - 访问者 1 返回到www.mysite.com- 从 CDN 的角度来看,自访问者 2 的请求以来只有 60 …

cdn cache-control cloudflare fastly next.js

7
推荐指数
1
解决办法
545
查看次数

如果Cache-Control具有"no-cache"和"max-age = 900",会发生什么?

:如果我设置的服务器响应,会发生什么 Cache-Control: private,no-cache,max-age=900?如果标题如下,会发生什么 Cache-Control: public,no-cache,max-age=900

既然它有no-cache浏览器(或代理服务器)是否考虑max-age

proxy caching no-cache fastly max-age

4
推荐指数
1
解决办法
750
查看次数

Varnish Hashtwo/Xkey和Fastly的"代理键"是一样的吗?

我目前正在决定是否管理我自己的Varnish服务器或使用像Fastly这样的托管服务.这里最重要的决策因素之一是基于标签的高效缓存失效,因为我计划将Varnish放在我们的API前面,我们需要经常发出使许多相关页面无效的清除请求.

快速提供代理键,Varnish似乎提供了一个单独的模块,包括许多名称,包括Hashtwo,Hashninja和XKey.这些功能看起来是一样的.它们实际上是相同的,还是这两个功能之间存在一些关键的技术或效率差异,这些关于它们的博客文章并不清楚?

varnish surrogate-key fastly

2
推荐指数
1
解决办法
1010
查看次数

与我自己托管的Varnish相比

使用Fastly而不仅仅是拥有自己的自己的Varnish有什么好处?Quickly提供的额外优势和功能是普通的Varnish没有,或者仅仅是Fastly管理Varnish的方式与CloudAMQP托管和管理RabbitMQ的方式相同?

hosted varnish fastly

2
推荐指数
1
解决办法
613
查看次数