我想创建一个 copyright (c) 2014请注意我的页脚。

但我希望它在所有年/月/日中循环,而无需我进行更改。

我有一个 _footer.html.erb部分我正在做的地方。

显而易见的简单答案就是说 <%= Time.now.year %> .

这意味着每次加载 View 时,最后都必须进行一次 Ruby 调用。考虑到它会出现在网站的每个页面上,而且每次加载都必须调用 Ruby,这似乎有点昂贵。

是否有更轻量级/简化的方式,可以缓存值并从缓存中显示?

请您参考如下方法:

在性能方面,您不应该相信自己的直觉,衡量才是明智的做法。

以下示例将计算 Time.now.year 所用时间与从 Redis 或 Memcached 提取值所用时间进行比较:

require 'redis' 
R = Redis.new 
R.set('year', Time.now.year) 
 
require 'memcached' 
M = Memcached.new 
M.set('year', Time.now.year) 
 
require 'fruity' 
compare( 
  compute:  -> { Time.now.year }, 
  redis:    -> { R.get('year').to_i }, 
  memcache: -> { M.get('year') } 
) 

输出:

Running each test 256 times. Test will take about 2 seconds. 
compute is faster than memcache by 11x ± 1.0 
memcache is faster than redis by 3x ± 0.1 

也就是说,只需调用 Time.now.year,不值得寻找替代方案。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!