2011-11-24 132 views
3

嗨,大家好我已经在生产模式下运行我的智能应用在轨道3.1与mongodb。在轨道上的红宝石3.1杠杆浏览器缓存

我可以看到萤火虫该网页的速度有一个聪明的问题:

的静态杠杆浏览器缓存,可以将上面的图片中看到:

enter image description here

我检查这个修复,但不是为我工作:

ROR + MVC Disable Browser Cache

我想知道我怎么能解决这个PR为我的图像,CSS和JavaScript,或者如果有这个宝石。

+0

你可以提出一个更清晰的问题吗?我无法真正看到您提供的图像或很好地理解问题。 –

回答

6

谢谢你的回应Hightechrider和miaout17。

使用Apache的Im。我添加到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> 

武卫我得到一个错误,当我尝试重置我的服务器阿帕奇:

语法错误的/etc/apache2/apache2.conf中的256线: 命令'ExpiresActive'无效,可能是拼写错误或未包含在服务器配置中的模块定义的 “重新启动”操作失败。 Apache错误日志可能包含更多信息。

有些想法吗?

编辑我发现这个错误的修复:

如果你有一个Ubuntu的用户可以使用a2enmod走捷径,即自动启用该模块为你的命令:

sudo a2enmod headers 

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

+5

如果您添加了mod头并仍然收到以下错误消息:'Invalid command'ExpiresActive',may be spepelled or defined by a module not included in server configuration',running this command:'a2enmod expires' – boblin

2

根据Asset Pipeline Guides,您需要在您的Web服务器配置文件中设置到期。本指南中提供了Apache和Nginx的配置示例,请阅读第4.1.1节“服务器配置”并尝试使用。

ROR + MVC Disable Browser Cache不起作用,因为您使用Web服务器托管静态文件,所以请求不会通过控制器。

我想我以前的回答是错误的,因为过期未指定可能意味着浏览器不会缓存任何东西,并导致非常差的性能。


上一页(错)答案:

事实上,也不会造成任何问题。 如果文件需要过期,您需要设置过期时间。但是,在Rails 3.1中,资产管道会自动将MD5添加到文件名中。如果文件被更改,URL也将被更改。因此,不设置到期时间是安全的。
+0

然后这个警报出现在谷歌网页的速度不会影响网站搜索引擎优化的性能?谢谢 – hyperrjas

+0

更新:对不起,经过一番调查,我认为这个答案是错误的。我会写另一个答案。 – miaout17

+0

那么这个问题的解决方法是什么?在轨道3.1? – hyperrjas