heroku panel
¿Cómo obtener Gzip y Vencer encabezado en una aplicación de Rails 3.1.1 en Heroku Cedar? (3)
Estoy ejecutando una aplicación de Rails 3.1.1 en Heroku Cedar . De forma predeterminada, esta pila no incluye Gzip y establece Caducar encabezados en los activos . Hay algunos documentos sobre eso, pero no está muy claro: http://devcenter.heroku.com/articles/http-routing
¿Alguien puede darme el código para activar eso?
Muchas gracias
Cedar no usa Nginx, por lo que tienes que descomprimir tus propios recursos con Rack :: Deflater, así:
# config.ru
require ::File.expand_path(''../config/environment'', __FILE__)
use Rack::Deflater
run YourApp::Application
También puede establecer encabezados para archivos estáticos directamente en su aplicación:
# config/environments/production.rb
config.static_cache_control = "public, max-age=3600"
Finalmente, es mejor que configure http://devcenter.heroku.com/articles/http-routing para reemplazar el almacenamiento en caché de Varnish. Mira esta publicación en el blog para más información.
Enchufe desvergonzado: creé una gema que permite la compresión, pero evita la compresión de imágenes.
Es importante que el middleware se incluya antes, antes de 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