在Sitecore 6.4中存储匿名访客的个性化详细信息

时间:2011-10-10 08:12:53

标签: sitecore sitecore6

我们正在使用小应用(Flash)来允许访问者识别他们的内容偏好。该应用程序的最终结果是一个项目列表,我们将其作为“您可能感兴趣的内容”呈现给用户(将其视为类似于亚马逊的“您构建的页面”)。访问者的页面需要使用GUID作为永久链接访问,并且可以转发到另一个访问者以查看相同的内容。我们没有登录或会员资格,因此所有访客都是匿名的。

我应该在何处以及如何为每位访客存储项目列表?

目前我们正在寻找在内容树中为每个访问者页面创建一个项目,该项目只会保存对用户感兴趣的所选上下文项目的引用。我们担心这将导致大量内容项目可能会影响整个解决方案的性能。

其他可能性是使用文件系统(可能是单个XML文件)或SQL查找。

什么被认为是最佳做法,并且我错过了任何可能的选择(在OMS中是否存在存储它的地方?)。

1 个答案:

答案 0 :(得分:1)

我们为客户做了类似的事情(除了我们必须坚持搜索查询,而不是用户偏好,但适用相同的原则)。 我们还要求“访问者的页面需要作为永久链接访问,并且可以转发给另一个访问者以查看相同的内容”(尽管不是专门使用GUID。)

我们最终做的是在查询字符串中持久保存用户的首选项。在您的情况下,例如:

http://website/pageThatYouBuilt.aspx?item1={guid}&item2={guid} //etc

当然,这最终会产生 ginormous 网址,因此你可以将guid放在一个简单的DTO对象中

public class State {
  public Guid Item1 {get;set;}
  public Guid Item2 {get;set;}
}

甚至

public class State {
  public List<Guid> Items {get;set;}
}

然后我们将这个'状态对象'序列化为一个字符串。并将其粘贴到url(查询字符串)中。 我们使用Protobuffer来实现一些非常有效的序列化(更短的URL)

像这样:

http://website/pageThatYouBuilt.aspx?state=GhIJgUc9EVb%2bk0cRnRABsX%2bob8UyAA%3d%3d 

当用户访问您的网页时,只需从查询字符串中获取状态,对其进行反序列化,然后使用您需要的内容项填充该页面。 这也有一个好处,访问者可以与其他用户分享他们的链接,他们都会看到相同的东西。

有关protofbuffer的更多信息,请参阅:http://code.google.com/p/protobuf-net/wiki/GettingStarted

顺便说一下,

不是特定于sitecore的问题:)