Heroku Cedar - Статические активы - Rails 3.0.x - PullRequest
2 голосов
/ 09 января 2012

Я заметил, что heroku внедряет промежуточное ПО rails3_serve_static_assets в Cedar, когда для serve_static_assets установлено значение false.Все, что я нашел на этом, - это этот сценарий инициализации , который соответствует имени, указанному при развертывании Heroku, и все, что он делает, - это снова включает обслуживание статических ресурсов.

Я пытаюсьчтобы получить больше информации о том, как Heroku обслуживает эти активы, потому что они, кажется, не приходят прямо из приложения Rails.

Когда я смотрю, например, на заголовки файла js, они смотрят что-тонапример:

Age:0
Connection:close
Content-Encoding:gzip
Content-Type:text/css
Date:Sun, 08 Jan 2012 19:04:05 GMT
Last-Modified:Sat, 07 Jan 2012 23:43:30 GMT
Server:nginx/0.7.67
Transfer-Encoding:Identity
Via:1.1 varnish
X-Varnish:677359987

Я предполагаю, что Via:1.1 varnish означает, что эти активы обслуживаются через Varnish, но онлайн-документация .по этому вопросу говорится, что Varnish недоступен в Cedar.

Документы Cedar в сжатых ответах (внизу) гласят, что:

Поскольку запросы к приложениям Cedarвыполняются непосредственно на сервере приложений, а не через прокси-сервер через HTTP-сервер, такой как nginx. Любое сжатие ответов должно выполняться внутри вашего приложения.

Однако мы можем ясно видеть, что ресурс gzip'd согласнодо Content-Encoding.Теперь я почти уверен, В Rails 3.0.x не включен Rack::Deflater (он все равно не отображается в rake middleware), поэтому я немного запутался в том, как этот активбудучи gzip'd.

Это своего рода предварительный курсор к моему следующему вопросу относительно обслуживания этих активов через Cloudfront, но мой вопрос здесь:

Может кто-тообъяснить точно, что происходит на Cedar re: статические активы.А именно, что обслуживает мои активы (Rails, Ngnix, Varnish ??) и что такое gzip'ng их?

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Если вы видите Varnish в своих заголовках, это означает, что ваши домены CNAME указаны на proxy.heroku.com, а не proxy.herokuapp.com - на Cedar нет Varnish, но вы увидите, что заголовки возвращаются, если вы используетеproxy.heroku.com и это будет работать, но это всего лишь пропуск.Они будут обслуживаться nginx.

0 голосов
/ 09 января 2012

Стек, который используется для стеков Bamboo и Cedar, одинаков, за исключением одного отличия, которое заключается в том, что кеш лака не является «активным» в Cedar. Это связано с тем, что Cedar поддерживает потоковую передачу, а Varnish этого не делает.

Следовательно, ваши активы поступают как есть из вашего Rails-процесса. С Rails 3.0 это были бы просто старые файлы. Если вы используете конвейер активов в Rails 3.1, процесс rake assets:precompile создаст сжатые версии ваших файлов для вас и будет их обслуживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...