Ruby 为什么都说 Devise 很慢?

Ddl1st · 2015年08月26日 · 最后由 dailysunshine 回复于 2015年09月17日 · 3061 次阅读

我用 ab 测试用了和没用 Devise 的结果,感觉没多大区别呀?

好像没什么人说 devise 慢,大部分不用 devise 的都是因为它“太难定制”。

为什么说“为什么都说 Devise 很慢?”?

Devise 的问题来自它用了比较高层次的抽象技巧去解决注册登录问题,之所以用这么高层次的抽象技巧是因为作者比较牛,是 Rails 的 Core Team Member 之一。如果你要去改造或者定制 Devise,如果你的编码抽象能力达不到作者的那个水平,就会感受到痛苦。

#3 楼 @rei 听过别人说,但我表示不理解"慢"在哪...

#4 楼 @lgn21st 嗯,了解过一些,把用户查询的方法改为二级缓存。之前完全看不懂是因为对warden的不了解。 devise 值得学习的地方挺多的。大多是用 warden 的回调来处理扩展的功能

存储或检查密码的瓶颈在 bcrypt, 因为 bcrypt 的 feature 就是慢,快就不安全了... 非密码请求的一大瓶颈在 session 的验证和签名,慢在 OpenSSL 和 Rack 里

devise 管得太宽 (last_login_at 这些东西其实让专门的用户行为追踪去做更好) 从前到后入侵太严重 (为啥要做一套模板?还要载入我不需要的模板引擎,和我不需要的 i18n 数据) 处理过程太黑箱,调用栈过深,定制只能通读 devise 源码并且复制修改 devise 源码,你还得熟悉 warden, 定制完了要升级 devise 自然兼容很有问题

我觉得最适合 devise 和 warden 的场景是只有搭 demo

我觉得 Devise 还好,并不觉得慢,也不觉得难以定制开发。

devise 的定制开发折腾人

#6 楼 @luikore devise :database_authenticatable, :registerable, :recoverable, :rememberable,:trackable, :validatable

任何第三方插件在自己改了源码之后都应该要考虑到升级后的兼容性问题吧...

rails 本来就是大而全的东西,devise 的做法相当 rails way. rails 同样自带 erb 模板引擎和 i18n 数据。

要达到所谓的“容易定制”很简单,像其他 gem 一样选择不做一些事情就行。结果什么都自己写,自然好定制。

无意说哪种更好,只想说 rails 和 sinatra 各有自己的场景。

如果有 gem 和 devise 能力大致相同,却比 devise 容易定制,相信社区会用脚投票。

测试的场景能不能详细说一下。

没有感觉到慢只是很难扩张而已,像楼上说的在此基础上定制开发很困难的。。。

#4 楼 @lgn21st 怪不得最近折腾 Devise 这么痛苦

需要 登录 后方可回复, 如果你还没有账号请 注册新账号