这是我目前的环境/ production.rb
Ventura::Application.configure do # Settings specified here will take precedence over those in config/application.rb # Code is not reloaded between requests config.cache_classes = true # Full error reports are disabled and caching is turned on config.consider_all_requests_local = false config.action_controller.perform_caching = true # Configure static asset server for tests with Cache-Control for performance config.serve_static_assets = false config.static_cache_control = "public,max-age=3600" # Compress JavaScripts and CSS config.assets.compress = true # Don't fallback to assets pipeline if a precompiled asset is missed config.assets.compile = true # Generate digests for assets URLs config.assets.digest = true # Defaults to Rails.root.join("public/assets") # config.assets.manifest = YOUR_PATH # Specifies the header that your server uses for sending files # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for Nginx # Force all access to the app over SSL,use Strict-Transport-Security,and use secure cookies. # config.force_ssl = true # See everything in the log (default is :info) # config.log_level = :debug # Use a different logger for distributed setups # config.logger = SyslogLogger.new # Use a different cache store in production # config.cache_store = :mem_cache_store # Enable serving of images,stylesheets,and JavaScripts from an asset server # config.action_controller.asset_host = "http://assets.example.com" # Precompile additional assets (application.js,application.css,and all non-JS/CSS are already added) # config.assets.precompile += %w( search.js ) # Disable delivery errors,bad email addresses will be ignored # config.action_mailer.raise_delivery_errors = false # Default mailer URL config.action_mailer.default_url_options = { :host => 'http://ventura-production.herokuapp.com/'} # Enable threaded mode # config.threadsafe! # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation can not be found) config.i18n.fallbacks = true # Send deprecation notices to registered listeners config.active_support.deprecation = :notify end
这是我的application.rb
# Enable the asset pipeline config.assets.enabled = true # Version of your assets,change this if you want to expire all your assets config.assets.version = '1.0' # Don't load resources when precompiling config.assets.initialize_on_precompile = false
我认为,我正确地包括了资产.这是一个例子:<%= javascript_include_tag“client / jquery”,“client / jquery-ui-1_8_18”,“client / bootstrap_min”,“client / jquery-select-menu”,“client / jquery_tablesorter”,“client / jquery_tablesorter_pager“,”客户端/应用程序“%>
并且对任何给定页面的请求进行部分跟踪:
cache: [GET /assets/client/jquery-ui-1_8_18-d903da4c219079ca31f0ea1b23f89afc.css] fresh cache: [GET /assets/client/bootstrap-2186f501bbd967564f2793c1c30aebc8.css] fresh cache: [GET /assets/client/rg-5f04e577cfffd5dbcb8a1735ad211bd9.css] fresh cache: [GET /assets/client/custom_charts-63eaad73c206c7ce6616c7f718be783f.css] fresh cache: [GET /assets/client/bootstrap_min-afbee53fdd364c866cbd15abd6473012.js] fresh cache: [GET /assets/client/jquery-select-menu-f2a3776430c5b4ead15173d0247f3f11.js] fresh cache: [GET /assets/client/jquery_tablesorter-7fc613e34c891c852e2932f59bf91368.js] fresh cache: [GET /assets/client/jquery_tablesorter_pager-141a886e7f35eb9f662b865516b23eca.js] fresh cache: [GET /assets/client/jquery-689ca6a49fcbd1c3777b13d1abcc1316.js] fresh cache: [GET /assets/client/application-6a61f272dd6a1ff7b5587435e67cd1bf.js] fresh
我应该能够避免每次页面加载所有这些. (是的,我不应该在我的待办事项列表中本地托管大多数jquery的东西)
解决方法
config.serve_static_assets
configures Rails itself to serve static assets. Defaults to true,but in the production environment is turned off as the server software (e.g. Nginx or Apache) used to run the application should serve static assets instead. Unlike the default setting set this to true when running (absolutely not recommended!) or testing your app in production mode using WEBrick. Otherwise you won´t be able use page caching and requests for files that exist regularly under the public directory will anyway hit your Rails app.
我会尝试设置config.serve_static_assets = true,如果你还没有.
更新:Heroku Dev Center还建议:
To allow your application to properly serve,invalidate and refresh static assets several config settings must be updated in config/environments/production.rb. Allow Rails to serve assets with the
serve_static_assets
setting.