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

Где вставить стойку:: Deflater в стойку?

В настоящее время у меня есть следующее:

use Rack::Rewrite
use Rack::Cache, {:verbose=>true, :metastore=>"memcached://localhost:11211/rack-cache/meta", :entitystore=>"memcached://localhost:11211/rack-cache/body"}
use Rack::Rewrite
use Rack::Lock
use Rack::Deflater
use ActionController::Failsafe
use #<Class:0x007fb34be9ac90>
use ActionController::Session::DalliStore, #<Proc:[email protected](eval):8 (lambda)>
use Rails::Rack::Metal
use ActionController::ParamsParser
use Rack::MethodOverride
use Rack::Head
use ActionController::StringCoercion
use Sass::Plugin::Rack
use Hassle
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
run ActionController::Dispatcher.new

Возможно, я ошибаюсь, но не имеет смысла перемещать Deflater на вершину? Таким образом, любой и весь трафик gzipped.

Спасибо за помощь.

4b9b3361

Ответ 1

Самый простой способ вставить его прямо в ваш config.ru:

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

Чтобы подтвердить это, запустите приложение и нажмите его с помощью curl:

curl -i --head "Accept-Encoding: gzip,deflate" http://localhost:5000

Которые должны возвращать заголовки:

Vary: Accept-Encoding
Content-Encoding: gzip

И красивый gzip-ответ.

Ответ 2

Мне пришлось вставить его довольно рано (до ActionDispatch::Static), например:

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

Вы можете использовать rake middleware для подтверждения (хотя это будет смотреть на ваши настройки разработки)

> 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