Ruby on rails 3.1 RubyonRails3.1利用浏览器缓存
我已经在生产模式下运行了我在rails 3.1和mongodb中的智能应用程序 我可以看出firebug的页面速度有一个聪明的问题: 利用静态浏览器缓存,您可以在上图中看到: 我已检查此修复,但不适用于我: 我想知道如何解决我的图像、css和javascript的此问题,或者是否存在此问题的gem。根据,您需要在web服务器配置文件中设置过期时间。指南中有Apache和Nginx的配置示例,请阅读第4.1.1节“服务器配置”并尝试 无法工作,因为您使用web服务器托管静态文件,因此请求不会通过控制器 我认为我之前的回答是错误的,因为未指定过期时间可能意味着浏览器不会缓存任何内容,并导致非常糟糕的性能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服务器托管静态文件,因此请求不会通
先前(错误)的答案: 事实上,这不会引起任何问题。 如果文件需要过期,则需要设置过期时间。但是,在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