【问题标题】:Rails fragment caching slower?Rails 片段缓存较慢?
【发布时间】:2016-02-29 19:27:41
【问题描述】:

我正在尝试在 Rails 中实现片段缓存。如果没有缓存,代码如下所示:

<div>
  <% data = MyObject.getDataFromDataBase %>

  <!-- complicated divs displaying the 'data', multiple partials -->
</div>

它创建了很多 SQL 查询(在视图中),并且总体而言,需要:

Completed 200 OK in 1107ms (Views: 1007.0ms | ActiveRecord: 93.6ms)

用这样的缓存包裹起来之后:

<div>
  <% cache 'my_cached' do %>
    <% data = MyObject.getDataFromDataBase %>

    <!-- complicated divs displaying the 'data', multiple partials -->
  <% end %>
</div>

我看到了输出(在第二次刷新时)——没有 SQL 查询(除了用户角色检查),什么都没有,只是:

 Read fragment views/my_cached/bda6867d8a08ec1637c0c926edced2d2 (0.7ms)
 Completed 200 OK in 1241ms (Views: 1228.7ms | ActiveRecord: 6.8ms)

我的问题是:这怎么可能,缓存后需要更长的时间?日志中什么也没有发生,文件在 0.7 毫秒内加载,为什么总共需要超过 1 秒?

【问题讨论】:

  • 好像你少了一个do:&lt;% cache 'my_cached' do %&gt;
  • 是的,问题写错了。
  • github.com/rails/rails/issues/35257 Aaron 指出当partial 非常小时,partial 缓存非常慢。

标签: ruby-on-rails ruby caching


【解决方案1】:

缓存工作正常。

我使用mini profiler 来了解渲染的工作原理以及我的页面刷新速度——从 160 毫秒到大约 10 毫秒。问题在于开发模式和application.html.erb文件,加载时间约为1秒。

【讨论】:

    猜你喜欢
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2014-08-02
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多