Heroku 有反向代理缓存吗?
Does Heroku have reverse proxy cache?
我制作了一个简单的应用程序,它设置 Cache-Control: public, immutable, max-age=3600
作为响应 headers。此应用故意放慢(休眠 2)以重现该问题。
我的目标是了解我是否可以使用 Heroku 对来自我的慢速(与缓存服务器相比)源 Heroku 应用程序的 API 响应进行短期 HTTP 缓存。
据我所知,我的 Heroku 应用程序前面没有 Heroku 的任何类型的 HTTP 缓存。
实际行为:
每个请求都会命中 origin/Heroku 应用程序:
$ curl https://cachecontroltest123.herokuapp.com/ --head
HTTP/1.1 200 OK
Connection: keep-alive
Cache-Control: public, immutable, max-age=3600
Content-Type: text/html;charset=utf-8
Content-Length: 12
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: WEBrick/1.4.2 (Ruby/2.6.6/2020-03-31)
Date: Sat, 24 Oct 2020 09:28:51 GMT
Via: 1.1 vegur
预期行为:
在第一个请求之后,Heroku 必须缓存响应,并在接下来的一个小时内提供它,而不会触及(慢)源。
我可以在 Whosebug 上找到一些相关问题,每个问题都说 Heroku 在每个应用程序前面都有一个 Varnish HTTP 缓存服务器集群,但这些答案已经很老了。
从那以后有什么变化吗?
Heroku 不做任何 HTTP 缓存。
这个任务要么在你的应用程序中完成(在 dyno 中,通过你的框架或类似 Varnish/Nginx 的东西),
或者对于更重的负载,通过放在 Heroku 应用程序前面的 CDN (Fastly, CloudFront, Cloudflare)。
还有 Edge Heroku add-on 可以简化 AWS Cloudfront 配置。
我制作了一个简单的应用程序,它设置 Cache-Control: public, immutable, max-age=3600
作为响应 headers。此应用故意放慢(休眠 2)以重现该问题。
我的目标是了解我是否可以使用 Heroku 对来自我的慢速(与缓存服务器相比)源 Heroku 应用程序的 API 响应进行短期 HTTP 缓存。
据我所知,我的 Heroku 应用程序前面没有 Heroku 的任何类型的 HTTP 缓存。
实际行为:
每个请求都会命中 origin/Heroku 应用程序:
$ curl https://cachecontroltest123.herokuapp.com/ --head
HTTP/1.1 200 OK
Connection: keep-alive
Cache-Control: public, immutable, max-age=3600
Content-Type: text/html;charset=utf-8
Content-Length: 12
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: WEBrick/1.4.2 (Ruby/2.6.6/2020-03-31)
Date: Sat, 24 Oct 2020 09:28:51 GMT
Via: 1.1 vegur
预期行为:
在第一个请求之后,Heroku 必须缓存响应,并在接下来的一个小时内提供它,而不会触及(慢)源。
我可以在 Whosebug 上找到一些相关问题,每个问题都说 Heroku 在每个应用程序前面都有一个 Varnish HTTP 缓存服务器集群,但这些答案已经很老了。 从那以后有什么变化吗?
Heroku 不做任何 HTTP 缓存。
这个任务要么在你的应用程序中完成(在 dyno 中,通过你的框架或类似 Varnish/Nginx 的东西), 或者对于更重的负载,通过放在 Heroku 应用程序前面的 CDN (Fastly, CloudFront, Cloudflare)。
还有 Edge Heroku add-on 可以简化 AWS Cloudfront 配置。