在我的页脚中显示当前年份的最轻量级方式是啥?

Posted

技术标签:

【中文标题】在我的页脚中显示当前年份的最轻量级方式是啥?【英文标题】:What is the most lightweight way to show the current year in my footer?在我的页脚中显示当前年份的最轻量级方式是什么? 【发布时间】:2014-06-24 04:47:32 【问题描述】:

我想在我的页脚中创建一个copyright (c) 2014 通知。

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

我有一个 _footer.html.erb 部分,我正在这样做。

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

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

有没有更轻量级/流线型的方式,也许可以缓存值并从缓存中显示?

【问题讨论】:

你可以片段缓存页脚 从缓存中检索一个值似乎比调用Time.now.year更昂贵 版权的目的是写副本的年份,所以应该是静态的,如 2014 年。不是吗? @Stefan 是这样吗?我将如何测试它? @Yule 这是一个有趣的观点。 【参考方案1】:

当涉及到表演时,你不应该相信你的直觉,衡量是更明智的。

以下示例将计算 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,不值得寻找替代方案。

【讨论】:

关于果味。看起来很有用。其他人的链接:github.com/marcandre/fruity【参考方案2】:

我很确定在每次请求时重新计算 Time.now.year 会更快。

从缓存中获取该值将导致从磁盘加载文件或通过套接字连接到 memcached 等服务。这听起来比做这个简单的Time.now.year 计算要贵得多。

【讨论】:

【参考方案3】:
<%= cache 'time_of_year', expires_in: 1.day do %>
    <%= Time.now.year %>
<%= end %>

在这里阅读更多。 http://guides.rubyonrails.org/caching_with_rails.html

IMO,我认为这不会让它变得更快,甚至可能会更慢。

【讨论】:

谢谢。我现在只使用香草Time.now.year...但是如果我需要像这样的片段缓存,我会回到这个答案。非常感谢! @marcamillion 请考虑将其标记为答案。【参考方案4】:

我不会为此担心太多,但如果您必须优化它,您的ApplicationHelper 中可能会有类似的内容:

def current_year
  @year ||= Time.now.year
end

并在您的视图中使用current_year

您也可以使用简单的caching 来完全避免调用。

就我个人而言,我发现这两种方法都是矫枉过正,无缘无故地剥夺了可读性/可维护性:)

【讨论】:

【参考方案5】:

You could use javascript,像这样:

 var currentyear = new Date().getFullYear();
 $(".element").html(currentyear);

或者更好的方法是使用 @iceman 建议的内容(缓存)

【讨论】:

以上是关于在我的页脚中显示当前年份的最轻量级方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

图标不会显示在台式计算机的页脚中

在我的页脚中,当我的屏幕宽度小于 700 像素时,如何将社交图标分成 2 行?

我想在我的页脚中编辑页脚学分。我正在使用 Whitedot 主题。这是我的 footer.php 文件的代码

想在反应原生应用程序的页脚中显示广告

如何在 ag-grid 表的页脚中启用或显示总行

在 UITableView 页脚中动态设置和调整标签大小