我们正在为我们的某个网站使用Kentico内置角色,我们在更新角色时遇到大约5秒的延迟。我们有一些联系人字段,我们使用规则来设置角色。有没有办法改善角色的更新时间。我们使用以下代码段来更新联系人:
int contactId = ModuleCommands.OnlineMarketingGetCurrentContactID();
Dictionary<string, object> contactData = new Dictionary<string, object>();
contactData.Add("key", "Test");
ModuleCommands.OnlineMarketingUpdateContactFromExternalSource(contactData, true, contactId);
答案 0 :(得分:2)
在Kentico中更新联系人的推荐方法是使用ContactInfoProvider
类,如下所示:
var contact = ContactInfoProvider.GetContactInfo(OnlineMarketingContext.CurrentContactID);
if (contact != null)
{
// update contact
contact.ContactFirstName = "Arnold";
contact.SetValue("CustomField", "Value");
// save contact
contact.Update();
}
此代码直接在数据库中更新联系人,更新联系人没有延迟。
要确保重新计算角色/联系人组,您可以使用以下web.config密钥:
<add key="CMSProcessContactActionsInterval" value="1" />
默认情况下,Kentico会将活动/联系人更新存储在内存中,然后每10秒处理一次,通过将其更改为1,您应该更快地看到更改。请记住,不建议在高流量站点上进行此操作,并且始终记录大量活动。原因是需要将活动记录到数据库中,并且您不希望始终保持对数据库的访问。