我在一个正常工作的rails应用程序中安装了active_admin gem。在这样做之后,应用程序明显变慢了。获取一个新页面大约需要4-5秒。一些功能被破坏了。
这是否可能是由于主动管理依赖于devise,以及由于我有自己的身份验证而引起的冲突?我已经有了一个具有“current_user”和登录功能等方法的用户模型。
换句话说,除非使用devise进行身份验证,否则您不应该使用active admin吗?我在文档中没有看到任何关于这方面的内容。
我使用的是Rails 3.1,Postgresql数据库,如果这很重要的话。
发布于 2011-10-20 16:41:58
Rails 3.1中的速度减慢是a known issue,这主要是由于活动管理与新的资产管道交互的方式。问题是-据我所知-只有在开发模式下运行时才会出现(所以当你部署到生产环境时,它应该会消失)。
还有一个正在开发中的memory leak issue可能会对性能产生影响。但我个人的经验是,这并不是主要的性能杀手。
为了克服开发过程中的缓慢环境问题,一种快速的解决方法是安装rails-dev-tweaks gem。这将防止Rails在传入请求是资产请求(图像、css、js等)时重新生成资产。
关于你的第二个问题: Active Admin只适用于devise。但是,完全可以在前端使用不同的身份验证机制,而只依赖于Active Admin中的Devise。当然,您应该确保设备身份验证和您自己的身份验证不冲突。您可以更改devise和Active Admin,以使用不同的方法检索当前用户。默认情况下,活动管理使用current_admin_user而不是current_user。您可以在config/initializers/active_admin.rb中更改活动管理的身份验证设置。有关更多信息,请阅读the authentication documentation。
发布于 2013-09-14 11:54:06
如果您的管理模型具有belongs_to和has_many关系,并且ActiveAdmin的默认行为实际上会将您的数据库加载到内存中。建议您只添加真正需要的过滤器。
为每个筛选器集合指定确切的字段还将极大地减少查询执行时间和内存占用。默认情况下,ActiveAdmin查找:id和:name属性。我将此应用于一个查询,将其从几秒减少到.7ms。是的!!
例如:
filter :account, collection: Account.unscoped.select(‘id, name’)https://stackoverflow.com/questions/7826885
复制相似问题