覆蓋Sitecore的鏈接提供程序後,CPU出現峯值。我們正在重寫GetItemUrl以獲取某些類型模板的別名url,並且當唯一擊中該網站的頁面是keepalive頁面時,它會達到CPU的80%。重寫Sitecore的鏈接提供程序時出現CPU峯值
這是默認的鏈接提供的配置行工作正常:
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" shortenUrls="true" useDisplayName="false" />
這是我們自定義鏈接提供的配置行尖峯CPU:
<add name="sitecore"
type="Library.Pipelines.CustomLinkProvider, Library"
addAspxExtension="false"
alwaysIncludeServerUrl="false"
encodeNames="true"
languageEmbedding="never"
languageLocation="filePath"
shortenUrls="true"
useDisplayName="false" />
的CustomLinkProvider類:
public class CustomLinkProvider : LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions options)
{
// check if item is factsheet or story, if it is then get the alias url
if (item.TemplateID == ItemConstants.Pages.Factsheet.TemplateID
|| item.TemplateID == ItemConstants.Pages.Story.TemplateID)
{
if (Sitecore.Context.Database != null)
{
if (SitecoreHelpers.HasAlias(item, Sitecore.Context.Database))
{
Item alias = SitecoreHelpers.GetAlias(item, Sitecore.Context.Database);
string friendlyUrl = alias.Name;
return friendlyUrl;
}
}
}
return base.GetItemUrl(item, options);
}
}
這是GetAlias函數:
public static Item GetAlias(Item currentItem, Database database)
{
Item aliasFolder = database.GetItem(ItemConstants.Common.SystemAliasFolder);
Item alias =
aliasFolder.Children.FirstOrDefault(
x => ((LinkField) x.Fields["Linked item"]).TargetID == currentItem.ID);
return alias;
}
任何人都知道爲什麼這會刺激CPU?目前有大約600個別名,但我不認爲這會導致如此大的高峯。
是你不使用配置文件? – 2013-02-20 22:51:45