我想创建一个 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
,不值得寻找替代方案。