Обслуживание статических активов от S3 - PullRequest
0 голосов
/ 16 декабря 2011

Я использую приложение Rails 3.0.9 в стеке Heroku Cedar, и S3 обслуживает статические ресурсы.В моем файле production.rb был установлен конфиг:

config.serve_static_assets = false

Если я изменю это значение на true, будет ли оно быстрее обслуживать кэшированный контент или я должен оставить его как есть?

Ответы [ 2 ]

5 голосов
/ 17 декабря 2011

Ответ от Rafal не является строго правильным, поскольку по сути он сводится к тому, какой стек и какую версию Rails вы выберете для запуска в своем приложении.

С Rails 3.0 в стеке Bamboo имеется кэш Varnish, который находится перед процессами Thin, которые запускает Heroku. Это кэширует любые статические ресурсы и возвращает их, не затрагивая ваше приложение.

С Rails 3.0 в стеке Cedar кеш Varnish отсутствует. Поэтому все запросы будут попадать в ваш процесс Rails независимо от того, статичны они или нет.

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

В центре разработки есть документ Rails 3.1 , который особенно полезен в этом отношении: http://devcenter.heroku.com/articles/cdn-asset-host-rails31

Итак, если вы ищете правильную настройку, помните об этом. Однако, прежде чем вы это сделаете, обратите внимание, что Heroku изменит этот параметр так, как он считает нужным, когда вы выполняете развертывание, поэтому любой параметр, который вы ввели, будет перезаписан в любом случае во время компиляции слагов. Поэтому не имеет значения, что вы здесь положили.

(и для справки, Heroku использует Nginx, вы просто не склонны его видеть)

0 голосов
/ 16 декабря 2011

Из направляющих рельсов:

config.serve_static_assets настраивает сам Rails для обслуживания статических ресурсов. По умолчанию установлено значение true, но в производственной среде оно отключено, поскольку серверное программное обеспечение (например, Nginx или Apache), используемое для запуска приложения, должно вместо этого обслуживать статические ресурсы. В отличие от настроек по умолчанию, установите для этого параметра значение true при запуске (абсолютно не рекомендуется!) Или при тестировании приложения в рабочем режиме с помощью WEBrick. В противном случае вы не сможете использовать кэширование страниц, и запросы на файлы, которые регулярно существуют в общедоступном каталоге, все равно попадут в ваше приложение Rails.

Надеюсь, это поможет.

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