授权与通知层的性能优化及实现
1. 授权抽象的性能影响
在开发中,授权抽象虽然能提供良好的开发体验,但有时会以牺牲性能为代价。由于授权贯穿整个应用,其性能问题尤为关键。
1.1 表示层的 N+1 授权问题
以博客文章列表为例,每个文章可能有发布、编辑和删除等操作,在视图模板中对每个文章进行多次授权检查。例如:
<%= posts.each do |post| %>
<div>
<%= link_to post.title, post %>
<% if allowed_to?(:publish?, post) %>
<%= button_to "Publish", publish_post_path(post), method: :patch %>
<% end %>
<% if allowed_to?(:edit?, post) %>
<%= link_to "Edit", edit_post_path(post) %>
<% end %>
<% if allowed_to?(:destroy?, post) %>
<%= button_to "Delete", post, method: :delete %>
<% end %>
</div>
<% end %>
对于 40 篇文章,会执行 120
超级会员免费看
订阅专栏 解锁全文
167万+

被折叠的 条评论
为什么被折叠?



