Rails 3.1 кеширование активов на героку - PullRequest
8 голосов
/ 04 июня 2011

Даже если я уже разыграл ресурсы: предварительно скомпилировал все мои активы, мне все еще трудно заставить герою правильно их кэшировать. Я продолжаю получать такие вещи, как

2011-06-04T16:40:20+00:00 app[web.1]: cache: [GET /assets/application-516c0fa9926527ab92d849148e557ee6.css] stale, invalid, store
2011-06-04T16:40:22+00:00 app[web.1]: cache: [GET /assets/logo-3a84e73bd76ca1ab9629d0a92eac7d4f.png] stale, invalid, store

из моего журнала. Хотя кажется, что я получаю HTTP 304, когда проверяю с помощью firebug. Я делаю что-то не так?

Ответы [ 3 ]

5 голосов
/ 12 июня 2011

Это сообщение в блоге имеет хорошие ответы и несколько вариантов.Сообщение в блоге не выглядит серьезным, но это рекомендуемое чтение.

полный URL: http://jimmycuadra.com/posts/the-challenge-of-asset-packaging-on-heroku

Позволяет Varnish кешировать и использовать его в качестве статического содержимого, это великолепно, нет необходимости в предварительной компиляции rake-задач.

ОБНОВЛЕНИЕ 20 марта 2012

мир быстро меняется.стек кедра на героку построен для этого.heroku create myapp --stack cedar Не забудьте добавить эту строку кода в ваш application.rb для компиляции при развертывании.

config.assets.initialize_on_precompile = false 

/ ОБНОВЛЕНИЕ

3 голосов
/ 14 июня 2011

Вы также можете попробовать этот аккуратный гем Rails под названием AssetHat ;Он использует кеширование и очень прост в настройке.

1 голос
/ 07 июня 2011

Если кто-то приземлится здесь, запустив свой собственный nginx, вот как вы это сделаете:

location ~ "^\/assets\/[^.]+-[a-z0-9]{32}\." { expires max; }

от @ cgriego

Но это не поможет намна Heroku: -)

С другой стороны, немного посмотрев, я просто воспользуюсь CDN.Затем я настрою свое приложение с помощью config.action_controller.asset_host.

Еще раз, Heroku упрощает использование лучших практик!

...