ruby-on-rails - Rails 3 Assets 管道 + Apache + Phusion Passenger

标签 ruby-on-rails ruby-on-rails-3 apache asset-pipeline passenger

我正在使用带有 Assets 管道的 Rails 3.1、phusion 3.0.x 和 apache 2.2.17。

http://guides.rubyonrails.org/asset_pipeline.html 的配置文档中,在第 4.1.1 节中,它指出我需要在我的 apache 配置中添加一个部分:

<LocationMatch "^/assets/.*$">
  # Some browsers still send conditional-GET requests if there's a
  # Last-Modified header or an ETag header even if they haven't 
  # reached the expiry date sent in the Expires header.
  Header unset Last-Modified
  Header unset ETag
  FileETag None
  # RFC says only cache for 1 year
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
</LocationMatch>

我一直在假设 Phusion Passenger 刚刚“处理”了这个......或者我是否疏忽了 RTFM?如果我想利用指纹,是否需要将其添加到 apache 配置中?

最佳答案

如果您想要 Assets 管道的全部好处,您确实需要将其添加到您的 Apache 配置中。如果没有该部分,您的 Apache 配置可能会明确告诉浏览器不要缓存 Assets - 导致浏览器和服务器之间不必要的往返次数。

为了让它工作,您可能需要启用更多的 Apache 模块。去做这个:

sudo a2enmod
# Choose headers
sudo a2enmod
# Choose expires
sudo service apache2 restart

要调试您的设置,我建议使用 Live Headers Firefox 插件。使用它,专门请求一个 Assets URL(例如 http://mysite.com/assets/application-8a0ae0b2d708f797674b7123c37501ba.css)and 在进行此更改之前和之后查看缓存 header 。通过在任何页面上执行查看源来查找示例 Assets URL。

更改后,您应该看到缓存过期设置为 future 一年。

关于ruby-on-rails - Rails 3 Assets 管道 + Apache + Phusion Passenger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053604/

相关文章:

ruby-on-rails - Rails 3.1 + Heroku : Can someone help me decipher this Heroku log?

ruby-on-rails-3 - 转义 HTML 输出但没有换行符

ruby-on-rails - Rails 使用 constantize 获取模块

ruby-on-rails - 使用 Ruby on Rails 生成模板文档

ruby-on-rails - 在搭建脚手架时创建关系

html - 有没有办法结合这些重定向?

apache - apache 错误日志中的 httpdocs/cache 条目

ruby-on-rails - Apache-Passenger 上的 Rails 应用程序 - 在 localhost 上运行良好,但不能通过远程访问

ruby-on-rails - 如何更改 Rails 5 设计中的验证错误消息

ruby-on-rails - ruby /rails : create a class method that operates on instances of its children?