Есть ли у Heroku кэш обратного прокси-сервера?

#heroku #http-headers #reverse-proxy #cdn #http-caching

#heroku #http-заголовки #обратный прокси #cdn #http-кэширование

Вопрос:

Я создал простое приложение Cache-Control: public, immutable, max-age=3600 , которое задает заголовки ответов. Это приложение намеренно медленное (sleep 2), чтобы воспроизвести проблему.

Моя цель — понять, могу ли я использовать Heroku для краткосрочного HTTP-кэширования ответов API из моего медленного (по сравнению с сервером кэша) исходного приложения Heroku.

Из того, что я вижу, Heroku не использует какое-либо HTTP-кэширование перед моим приложением Heroku.

Фактическое поведение:

Каждый запрос попадает в приложение 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 должен был кэшировать ответ и в течение следующего часа обслуживать его, не нажимая на (медленный) источник.

Я мог бы найти несколько связанных вопросов в Stackoverflow, в каждом из которых говорится, что Heroku имеет кластер серверов кэширования Varnish HTTP перед каждым приложением, но эти ответы довольно старые. Что-то изменилось с тех пор?

Ответ №1:

Heroku не выполняет никакого HTTP-кэширования.

Эта задача должна выполняться либо в вашем приложении (в dyno, либо вашим фреймворком, либо чем-то вроде Varnish / Nginx), либо для большей нагрузки с помощью CDN, который вы размещаете перед приложением Heroku (Fastly, CloudFront, Cloudflare).

Существует также дополнение Edge Heroku, которое упрощает настройку AWS Cloudfront.

Комментарии:

1. Спасибо за дополнение Edge, я не знал об этом.