Подтвердить что ты не робот

Как получить Gzip и Expires Header в приложении Rails 3.1.1 на кедрах Героку?

Я запускаю приложение Rails 3.1.1 на кедра Героку. По умолчанию этот стек не Gzip и устанавливает Expires Headers on assets. В этом есть какой-то документ, но это не очень понятно: http://devcenter.heroku.com/articles/http-routing

Может кто-нибудь дать мне часть кода, чтобы активировать это?

Большое спасибо

4b9b3361

Ответ 1

Cedar не использует Nginx, поэтому вам нужно вручную собирать активы с помощью Rack:: Deflater, например:

# config.ru
require ::File.expand_path('../config/environment',  __FILE__)
use Rack::Deflater
run YourApp::Application

Также вы можете установить заголовки для статических файлов непосредственно в своем приложении:

# config/environments/production.rb
config.static_cache_control = "public, max-age=3600"

Наконец, вы, вероятно, лучше настроите Rack:: Cache для замены кэширования лаков. См. этот пост в блоге для получения дополнительной информации.

Ответ 2

Бесстыдный плагин - я создал драгоценный камень, который позволяет сжатие, но избегает сжатия изображений.

https://github.com/romanbsd/heroku-deflater

Ответ 3

Важно, чтобы промежуточное ПО было включено раньше, до ActionDispatch::Static

#production.rb
config.middleware.insert_before ActionDispatch::Static, Rack::Deflater

> rake middleware
use Rack::Deflater
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007f8e18455e90>
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Remotipart::Middleware
use ActionDispatch::Head
use Rack::ConditionalGet
use Rack::ETag
use ActionDispatch::BestStandardsSupport
use Warden::Manager
use Rack::Mongoid::Middleware::IdentityMap
use Rack::Pjax
run MyApp::Application.routes