缓存JSON 1秒与谷歌CDN,以减少服务器负载



我正在寻找一个解决方案,以减少我的API服务器负载。我认为将内容缓存1秒是个好主意,这样服务器每秒只会收到1个请求,而不是很多。然而,我没能使它工作:

  • Use origin settings based on Cache-Control headers模式下:Google CDN忽略'Cache-Control', 'public, max_age=1'标头。它看起来像我不能缓存JSON在这种模式下,可能是因为缺少Content-RangeTransfer-Encoding: chunked头?

  • Force cache all content模式下:它实际上可以工作,但是最小的TTL是1分钟,这对我来说太长了。我想每秒钟更新一次内容。

我很惊讶没有人为api使用短期缓存,因为理论上它可以减少负载,并且在使用外部api时可能节省成本。如果您从昂贵的API端点请求相同的东西,则不需要支付两次费用)。什么好主意吗?

为了缓存一个对象,即使你使用荣誉起源缓存模式,你也需要有一个有效的content-range头。使用force cache all模式会用缓存控制指令来装饰对象,Cloud CDN需要缓存对象,即使原点没有这个指令——FORCE_CACHE_ALL基本上取原点推送的所有内容,并覆盖缓存控制指令。

如果你正在使用UX,你是正确的,控制台不允许你设置一个较低的TTL值;但是,您可以通过gCloud命令

设置较低的TTL。
gcloud compute backend-services update BACKEND_SERVICE_NAME --client-ttl=1 --default-ttl=1 --global

当使用"使用基于cache - control header ">缓存模式的原始设置时,您可以通过包含Cache-Control: public, max-age=1响应头来指示Google Cloud CDN缓存响应1秒。

您之前尝试的问题似乎是一个打字错误:正确的指令是max-age(带连字符),而不是max_age(带下划线)。

最新更新