我发现使用link
函数和生成的路径帮助函数来缓慢渲染模板。
例如,我运行mix phoenix.gen.html Author authors name:string
在index.html.eex
内有
<%= for author <- @authors do %>
# ...
<%= link "Show", to: author_path(@conn, :show, author) %>
<% end %>
1,500位作者记录的响应时间超过2秒。但是,如果我用link
注释掉上述author_path
函数,则响应时间仅为9毫秒。无论哪种情况,数据库查询时间都相同(4ms)。
我尝试删除link
并仅打印author_path(@conn, :show, author)
。这有帮助,但响应时间仍然超过500毫秒。
感谢您就如何找到这种缓慢性能的来源提出任何建议。
答案 0 :(得分:6)
这是因为Elixir 1.2之前的协议未在开发中进行整合。你会发现,如果你在prod中运行,你的渲染将快速闪电。如果你跳过Elixir 1.2,协议总是被合并,即使是在开发中。