render :json => {
"playlist" => playlist_description,
"songs" => @playlist.songs.as_json(:include => {:playlist_songs => {:only => [:id, :position]}})
}
上面的代码会导致对数据库进行 1+N 次查询,一次加载每首歌曲的 playlist_songs 。
播放列表预加载在@playlist 中。
这么慢,我该如何优化?
我的猜测:您目前并不急于加载 playlist_songs 。您当前正在等待 as_json 调用(之后所有歌曲都已加载),然后代码必须迭代每首歌曲并获取 playlist_songs。
我的猜测(这完全未经测试,可能包含错误)
@playlist.songs.all(:include => :playlist_songs).as_json(:include => {:playlist_songs => {:only => [:id, :position]}})
AFAICT,这应该first急切地加载所有歌曲andplaylist_songs...然后渲染为 json。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)