首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionpack页面缓存呈现每个请求的视图

Actionpack页面缓存呈现每个请求的视图
EN

Stack Overflow用户
提问于 2013-08-16 09:12:54
回答 1查看 1.3K关注 0票数 3

我尝试在我的静态页面中使用Actionpack页面缓存。如果我理解工作的话,'Actionpack页面缓存‘是向rails发出的第一个请求。呈现视图,并存储在缓存中的Html公共/部署/.

第二个类似的请求没有到达rails。视图不会呈现。将从缓存中提取一个页面。

但在日志中它看起来完全不同。

“第一次请求”

代码语言:javascript
复制
    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 GET "/init/load_app" for 127.0.0.1 at 2013-08-16 12:24:49 +0400
    I, [2013-08-16T12:24:49.088000 #16835]  INFO -- : Processing by InitController#load_app as HTML

“第二次请求”

代码语言:javascript
复制
    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)

在所有请求中,视图将呈现,缓存页将被覆盖。

I使用:rails 4.0.0

jruby

美洲狮服务器

生产模式

启动服务器- RAILS_ENV=production rails的puma

my production.rb

代码语言:javascript
复制
    ResFm::Application.configure do

      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

在控制器中我使用

代码语言:javascript
复制
caches_page :load_app
def load_app

end

这是一个根网址。

我的Gemfile

代码语言:javascript
复制
    gem 'rails', '4.0.0'
    gem 'activerecord-jdbcpostgresql-adapter', '~>1.3.0.beta2'
    gem 'dalli'
    gem 'jquery-ui-rails'
    gem 'jquery-rails'

    group :assets do
      gem 'coffee-rails', '~> 4.0.0'
      gem 'uglifier', '>= 1.3.0'
      gem 'therubyrhino'
      gem 'execjs'
    end

    group :development do
        gem 'annotate'
        gem 'puma'
    end

    gem 'dimensions-rails'
    gem 'sass-rails', '~> 4.0.0'

    group :production do
      gem 'rack-cache'
      gem 'actionpack-page_caching'
    end

请帮助我理解我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 09:18:25

在使用页面缓存时,您应该指示您的get服务器为在公共目录中写入的缓存页面提供服务。如果请求的正常路径是/foo/bar.html,则缓存的副本应该存储在Rails.root/public/foo/bar.html中。这样,请求就不会碰到您的Rails应用程序。

当像您已经做的那样将存储路径更改为public/deploy时,您应该注意将您的When服务器指向该目录以从那里服务文件。我不认为Puma会处理这个问题,所以您应该在前端服务器(比如Apache或Nginx)中处理这个问题。

尽管如此,页面缓存被从Rails 4中删除是有充分理由的,也许您应该研究一下俄罗斯娃娃缓存,因为它更灵活,更易于使用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18269816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档