ruby on rails - Actionpack page caching rendered views on every request -
i try use actionpack page caching static page. if understand work 'actionpack page caching' first request gets rails. rendered views, , html stored in cache public/deploy/...
a second similar request not reach rails. views not renderd. page taken cache.
but in log looks different.
"first request"
i, [2013-08-16t12:24:43.591000 #16835] info -- : rendered init/scene.html.erb within layouts/application (4.0ms) i, [2013-08-16t12:24:43.615000 #16835] info -- : rendered layouts/_server_params.html.erb (4.0ms) i, [2013-08-16t12:24:43.624000 #16835] info -- : rendered windows/_login_without_social_window.html.erb (2.0ms) i, [2013-08-16t12:24:43.661000 #16835] info -- : rendered windows/_choice_base_career_window.html.erb (34.0ms) i, [2013-08-16t12:24:43.687000 #16835] info -- : rendered windows/_auth_window.html.erb (21.0ms) i, [2013-08-16t12:24:43.691000 #16835] info -- : rendered windows/_free_teams_window.erb (2.0ms) i, [2013-08-16t12:24:43.692000 #16835] info -- : rendered layouts/_windows.html.erb (74.0ms) i, [2013-08-16t12:24:43.775000 #16835] info -- : rendered layouts/_bottom_menu.html.erb (80.0ms) i, [2013-08-16t12:24:43.780000 #16835] info -- : write page /home/pri/test/public/deploy/init/load_app.html (1.0ms) i, [2013-08-16t12:24:43.782000 #16835] info -- : completed 200 ok in 208ms (views: 200.0ms | activerecord: 0.0ms) i, [2013-08-16t12:24:49.070000 #16835] info -- : started "/init/load_app" 127.0.0.1 @ 2013-08-16 12:24:49 +0400 i, [2013-08-16t12:24:49.088000 #16835] info -- : processing initcontroller#load_app html "second request"
i, [2013-08-16t12:24:49.096000 #16835] info -- : rendered init/scene.html.erb within layouts/application (1.0ms) i, [2013-08-16t12:24:49.108000 #16835] info -- : rendered layouts/_server_params.html.erb (2.0ms) i, [2013-08-16t12:24:49.112000 #16835] info -- : rendered windows/_login_without_social_window.html.erb (1.0ms) i, [2013-08-16t12:24:49.124000 #16835] info -- : rendered windows/_choice_base_career_window.html.erb (10.0ms) i, [2013-08-16t12:24:49.138000 #16835] info -- : rendered windows/_auth_window.html.erb (11.0ms) i, [2013-08-16t12:24:49.140000 #16835] info -- : rendered windows/_free_teams_window.erb (1.0ms) i, [2013-08-16t12:24:49.142000 #16835] info -- : rendered layouts/_windows.html.erb (31.0ms) i, [2013-08-16t12:24:49.161000 #16835] info -- : rendered layouts/_bottom_menu.html.erb (16.0ms) i, [2013-08-16t12:24:49.165000 #16835] info -- : write page /home/pri/test/public/deploy/init/load_app.html (3.0ms) i, [2013-08-16t12:24:49.167000 #16835] info -- : completed 200 ok in 76ms (views: 70.0ms | activerecord: 0.0ms) in requests views rendered , cache page overwrited.
i use: rails 4.0.0
jruby
puma server
production mode
start server - rails_env=production rails s puma
my production.rb
resfm::application.configure config.cache_classes = true config.eager_load = true config.consider_all_requests_local = false config.action_controller.perform_caching = true config.cache_store = :dalli_store config.assets.js_compressor = :uglifier config.assets.css_compressor = :sass config.assets.compile = false config.assets.digest = true config.assets.version = '1.0' config.assets.debug = false config.log_level = :info config.i18n.fallbacks = true config.active_support.deprecation = :notify config.log_formatter = ::logger::formatter.new # cache static pages config.action_controller.page_cache_directory = "#{rails.root.to_s}/public/deploy" config.serve_static_assets = true #cdn google servers config.asset_host = 'http://resassets.appspot.com' end in controller use
caches_page :load_app def load_app end and root url.
my gemfile
gem 'rails', '4.0.0' gem 'activerecord-jdbcpostgresql-adapter', '~>1.3.0.beta2' gem 'dalli' gem 'jquery-ui-rails' gem 'jquery-rails' group :assets gem 'coffee-rails', '~> 4.0.0' gem 'uglifier', '>= 1.3.0' gem 'therubyrhino' gem 'execjs' end group :development gem 'annotate' gem 'puma' end gem 'dimensions-rails' gem 'sass-rails', '~> 4.0.0' group :production gem 'rack-cache' gem 'actionpack-page_caching' end please me understand wrong.
when using page caching should instruct webserver serve cached pages written in public directory. idea if normal path request /foo/bar.html cached copy should stored in rails.root/public/foo/bar.html. way request never hits rails application.
when changing storage path public/deploy have done, should take care point webserver directory serve files there. don't think puma handles that, should handle in frontend server (like apache or nginx).
having said that, page caching removed rails 4 reason, prehaps should russian doll caching it's more flexible , easy use.
Comments
Post a Comment