渲染动作性能
问题描述:
我有查看显示问题,答案,对答案的注释和问题。渲染动作性能
要显示我想用这样的所有数据:
[HttpGet, ChildActionOnly]
public PartialViewResult RenderQuestion(int questionId, int page, int pageSize, string sort)//For question display
{
var question = questionsService.GetQuestion(questionId);
var author = userService.GetUser(question.AuthorId);
var commentIds = commentService.GetTopCommentIds(questionId, int.MaxValue, CommentType.Question);
var answerIds = answerService.GetAnswerIdsByQuestion(page, pageSize, questionId, sort);
var model = new QuestionModel{ Question = question, Author = author, CommentIds = commentIds, AnswerIds = answerIds}
return PartialView("_Question", model);
}
[HttpGet, ChildActionOnly]
public PartialViewResult RenderAnswer(int answerId)
{
var answer = answerService.GetAnswer(answerId);
var author = userService.GetUser(answer.AuthorId);
var commentIds = commentService.GetTopCommentIds(answerId, int.MaxValue, CommentType.Answer);
var model = new AnswerModel { Answer = answer, Author = author, CommentIds = commentIds};
return PartialView("_Answer");
}
[HttpGet, ChildActionOnly]
public PartialViewResult RenderComment(int commentId, CommentType commentType)
{
var comment = commentService.GetComment(commentId, commentType);
var author = userService.GetUser(comment.AuthorId);
var model = new CommentModel { Comment = comment, Author = author};
return PartialView("_Comment");
}
而在例如用于问题,我会在循环迭代Model.AnswerIds
和呼叫@{ Html.RenderAction("RenderAnswer", new {answerId}) };
和Model.CommentIds呼唤我的部分景色@{ Html.RenderAction("RenderComment", new {commentId}) };
我想知道,这是一种很好的视角分解方法,并且这种方式会对通常造成的性能造成不良影响。@Html.RenderAction
调用。
答
不幸的是,这会导致性能不佳。 RenderAction的速度并不快。
您还将多次实例化您的控制器(可能会多次打开数据库)。
我建议你把所有东西都放入一个专门的控制器动作中。