T4MVC 和性能问题
T4MVC and performance issues
我使用 T4MVC 已经有一段时间了。我有一个高流量网站,每年都在增长,我们注意到一些性能问题。我们正在使用 LeanSentry,我们在 T4MVC URL 代中看到了这些类型的 CPU 峰值。下面是一个高 CPU 用户使用快照,其中提供了这些代码行。
这是一个合理的问题还是其他问题?
性能命中代码生成示例 URLS
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
之外并没有做太多事情,即 part of MVC。所以我怀疑如果你不使用 T4MVC 直接使用 UrlHelper.RouteUrl
来生成 URL,你会看到同样的东西。
可能是因为此 MVC 方法有些昂贵,并且性能问题是由于对其调用太多而无法呈现单个页面(例如,如果页面非常复杂并且包含许多生成的 URL) ).
我使用 T4MVC 已经有一段时间了。我有一个高流量网站,每年都在增长,我们注意到一些性能问题。我们正在使用 LeanSentry,我们在 T4MVC URL 代中看到了这些类型的 CPU 峰值。下面是一个高 CPU 用户使用快照,其中提供了这些代码行。
这是一个合理的问题还是其他问题?
性能命中代码生成示例 URLS
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
之外并没有做太多事情,即 part of MVC。所以我怀疑如果你不使用 T4MVC 直接使用 UrlHelper.RouteUrl
来生成 URL,你会看到同样的东西。
可能是因为此 MVC 方法有些昂贵,并且性能问题是由于对其调用太多而无法呈现单个页面(例如,如果页面非常复杂并且包含许多生成的 URL) ).