.net - T4MVC 和性能问题
问题描述
我已经使用 T4MVC 有一段时间了。我有一个每年都在增长的高流量网站,我们注意到了一些性能问题。我们正在使用 LeanSentry,并且我们在 T4MVC URL 生成中看到了这些类型的 CPU 峰值。下面是一个高 CPU 使用率快照,其中提供了这些代码行。
这是一个有效的担忧还是别的什么?
性能命中代码生成 URL 的示例
protected virtual void PopulateScheduleGameLinks(List<ScheduleGroupDisplay<ScheduleGameDisplay>> gamesGroup)
{
gamesGroup.SelectMany(q => q.Games)
.ToList()
.ForEach(
q =>
{
foreach (var asset in q.Assets)
{
asset.Url = Helper.GetFilePath(asset.Url, asset.Version);
}
if (q.ExternalId != null)
{
long ticks;
if (long.TryParse(q.ExternalId, out ticks) &&
q.StatisticsType != StatisticsType.MyStatsOnline &&
q.StatisticsType != StatisticsType.ScorebookPlus &&
q.Assets.All(t => t.Type != GameAssetType.Scoresheet))
{
q.Assets.Add(new ScheduleGameAssetDisplay
{
Type = GameAssetType.Scoresheet,
Url = Url.Action(MVC.EventReports.GameStatistics(q.EventId, null, q.Id.ToString()).AddReportPdf().AddRouteValue(Config.QueryString.Version, ticks))
});
}
}
q.LiveGameLink = this.BuildScoreCastUrl(q.StatisticsType, q.ExternalId, null, q.Id, q.EventId, q.SportHost, q.EventName.GenerateSlug());
q.CalendarLink = Url.Action(MVC.Calendar.Game(q.Id));
});
}
解决方案
除了调用之外, T4MVC 本身并没有做太多事情,调用UrlHelper.RouteUrl
是MVC 的一部分。所以我怀疑如果你UrlHelper.RouteUrl
不使用 T4MVC 直接使用来生成 URL,你会看到同样的事情。
可能是这种 MVC 方法有点昂贵,并且性能问题是由于对它的调用过多而无法呈现单个页面(例如,如果页面非常复杂并且包含许多生成的 URL)。
推荐阅读
- javascript - .inject() 和 .goto() 方法不适用于噩梦
- vba - 如何在 Excel 中从 vba 连接到 ms-access 数据库?
- spring - 带有用户名和密码的 Zonky + Spring Boot + Postgres + Flyway
- jquery - 如何在所有类中从 YYYY-MM-DD 转换为 DD-MM-YYYY,每个类在 jquery 中具有不同的值?
- javascript - 使用 identityserver4 和 aspnet 身份时如何安全地实现空闲超时?
- python - 如何比较子列表的值
- java - 无法更改预定义的字符串值
- r - R中多边形的交集使用sf
- node.js - 如何有效地发送大数据包/合并较小的数据包?
- python - 如何将方程绘制到具有重新定义索引的数组中