Есть ли стандартный способ обслуживания предварительно сжатых ресурсов в Rails 3.2 на Heroku Cedar?

У меня есть приложение Rails 3.2, которое я развертываю в стеке Heroku Cedar. Это означает, что само приложение отвечает за обслуживание своих статических ресурсов. Я бы хотел, чтобы эти активы были заархивированы gzip, поэтому я вставил Rack::Deflater в свой стек промежуточного программного обеспечения в production.rb:

middleware.insert_after('Rack::Cache', Rack::Deflater)

...и curl говорит мне, что это работает так, как рекламируется.

Однако, поскольку Heroku приложит все усилия, чтобы запустить rake assets:precompile, создав кучу предварительно сжатых ресурсов, я бы очень хотел использовать их (вместо того, чтобы позволить Rack::Deflater снова выполнять всю работу). Я видел рецепты их обслуживания с помощью nginx (бесполезно на Heroku) и CDN (пока не хочу использовать CDN), но я не видел ничего, что могло бы работать автономно. Для этого я собрал промежуточное ПО, но мне было интересно, лучший ли это способ идти об этом?


person Guy Bolton King    schedule 21.03.2012    source источник


Ответы (1)


Поскольку дефлятор находится после кэша стойки, то дефлятору нужно будет выполнить работу только один раз, после чего сжатые активы будут обслуживаться из кэша стойки (при условии, что кеш достаточно велик, чтобы они время от времени не выбрасывались).

Тем не менее, ваше промежуточное программное обеспечение выглядит довольно круто, и вы должны сделать его жемчужиной и написать о нем блог, возможно, это будет то, что люди начнут использовать :-)

person John Bachir    schedule 01.04.2012
comment
Спасибо: я не уверен, что драгоценный камень будет супер-полезным, но я постараюсь найти время, чтобы сделать это. Как бы то ни было, я подозреваю, что оглушающая тишина означает, что это обычно не рассматривается как проблема! - person Guy Bolton King; 02.04.2012
comment
Кроме того, Cedar довольно новый, и люди все еще оптимизируют его. Heroku только недавно опубликовали свои собственные исчерпывающие документы о Rack::Cache devcenter. .heroku.com/articles/ Это очень неидеальная система для статических ресурсов, для этого действительно нужно использовать CDN. Даже для нестатических ресурсов это менее эффективно, чем лак на бамбуке. - person John Bachir; 02.04.2012
comment
Согласен: когда я написал вопрос, я находился в процессе выяснения того, как лучше всего поступить, и я выбрал используя CloudFlare и обходя Rack::Cache для статических ресурсов на данный момент. - person Guy Bolton King; 04.04.2012