Ruby on rails 3.1 RubyonRails3.1利用浏览器缓存

Ruby on rails 3.1 RubyonRails3.1利用浏览器缓存,ruby-on-rails-3.1,browser-cache,Ruby On Rails 3.1,Browser Cache,我已经在生产模式下运行了我在rails 3.1和mongodb中的智能应用程序 我可以看出firebug的页面速度有一个聪明的问题: 利用静态浏览器缓存,您可以在上图中看到: 我已检查此修复,但不适用于我: 我想知道如何解决我的图像、css和javascript的此问题,或者是否存在此问题的gem。根据,您需要在web服务器配置文件中设置过期时间。指南中有Apache和Nginx的配置示例,请阅读第4.1.1节“服务器配置”并尝试 无法工作,因为您使用web服务器托管静态文件,因此请求不会通

我已经在生产模式下运行了我在rails 3.1和mongodb中的智能应用程序

我可以看出firebug的页面速度有一个聪明的问题:

利用静态浏览器缓存,您可以在上图中看到:

我已检查此修复,但不适用于我:

我想知道如何解决我的图像、css和javascript的此问题,或者是否存在此问题的gem。

根据,您需要在web服务器配置文件中设置过期时间。指南中有Apache和Nginx的配置示例,请阅读第4.1.1节“服务器配置”并尝试

无法工作,因为您使用web服务器托管静态文件,因此请求不会通过控制器

我认为我之前的回答是错误的,因为未指定过期时间可能意味着浏览器不会缓存任何内容,并导致非常糟糕的性能


先前(错误)的答案:

事实上,这不会引起任何问题。 如果文件需要过期,则需要设置过期时间。但是,在Rails3.1中,资产管道会自动将MD5添加到文件名中。如果文件更改,URL也将更改。因此,不设置过期时间是安全的。
感谢您对Hightechrider和miaout17的回复

我正在使用apache。我向apache2.conf添加下一个代码:

<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>

然后重新启动服务器,瞧:D工作正常。

那么此警报出现在谷歌页面上,速度是否会影响网站的性能,以进行谷歌搜索引擎优化?对不起,经过调查,我认为这个答案是错误的。我会写另一个答案。那么这个问题的解决方法是什么?在rails 3.1中,资产管道指南是修复程序。请阅读4.1.1服务器配置部分。您使用的是什么web服务器?apache还是nginx?你能把问题说清楚一点吗?我无法真正看到您提供的图像,也无法很好地理解问题。如果您添加了mod头,但仍然收到以下错误消息:
无效命令'ExpiresActive',可能拼写错误或由服务器配置中未包含的模块定义,请运行此命令:
a2enmod expires
sudo a2enmod headers