我希望我在这里没有搞错(一如既往,sitecore 文档很糟糕!)
我想要一种针对访问者存储信息的方法,我对 sitecore 相当陌生,但联系方面似乎是理想的解决方案,从上面的链接中逐字逐句地实施,直到它投入生产,我对此感到非常满意。当我存储它持久的信息时,我可以阅读它:
public IMpmVisitorFacet GetMpmVisitorFacet()
{
return _contact.GetFacet<IMpmVisitorFacet>(_MPMVisitorConfigName);
}
并设置信息,一切似乎都很棒。我还可以看到SC_ANALYTICS_GLOBAL_COOKIE
正在设置的站点核心,一切看起来都很棒。然后我做了一些更彻底的测试......
问题似乎是数据不会持续很长时间。如果我将一些信息放入构面,它将停留一个小时左右(我可以关闭我的浏览器,查看其他网站等)并且我将能够访问它,但在“数量时间”,一切都消失了。
重新访问文档后(我是否提到过它们不是很好),我注意到一个句子中的警告,这是我以前没有看到的:
好吧,我可以创建另一个只读取员工编号的 Web 表单页面。这将告诉我接触面数据 至少存储在内存中。但是永久存储呢?
等等,我以为这是永久存储?!因此,该示例显示了一些读取“方面”的代码。
var contact = Tracker.Current.Contact;
var data = contact.GetFacet<IEmployeeData>("Employee Data");
data.EmployeeId = "ABC123";
.....
<p>Employee data contact facet updated.</p>
<p>Contact ID: <b><%=contact.ContactId.ToString()%></b></p>
<p>Employee #: <b><%=data.EmployeeId%></b></p>
但这个方面似乎只存在很短的一段时间。然后继续:
出于性能原因,Sitecore 仅在会话结束时将联系人数据写入 xDB。这意味着如果我查看 MongoDB...
然后它继续在其新的闪亮时尚的 mongoDb 实现中显示数据。但是,如果我实际上不能以编程方式访问和使用该信息,那么它在 mongo 中有什么用!
所以这就提出了一个问题,一旦会话被放弃,我如何访问这个联系信息?
即用户登录我的网站 -> 我在他们的联系方式中添加了一些信息 -> 他们第二天回来 -> 我想阅读我之前添加的信息
还有其他几个文档讨论了在体验配置文件中访问此数据,以索引到 Lucene和体验平台(为什么有两个名称几乎完全相同的产品?!)但没有说明如何在网站本身,在代码中。
要添加Dmytro Shevchenko的评论:
- 我可以在“体验资料”中看到我的用户,并且可以看到我对该网站的访问。
- 我知道这个用户确实有我的附加方面信息,因为它触发了一些代码。
- 我可以在 mongo Db 中找到我的用户(从体验资料页面中的查询字符串中取出的 id)
- 但是当我在 mongoDb 中查看用户时,附加信息不存在。
- 一些联系人记录有这些数据,但其他人没有
因此,将新信息写入 mongo 似乎是一个问题……有人对此有任何帮助或类似经验吗?