2011-10-10 41 views
1

我们正在使用一个小应用程序(Flash)来允许访问者识别其内容首选项。该应用程序的最终结果是一个项目列表,我们向用户呈现为“您可能感兴趣的内容”(将其视为与亚马逊的“您创建的页面”类似)。访问者的页面需要使用GUID作为永久链接访问,并且可以转发给其他访问者以查看相同的内容。我们没有登录或会员资格,所以所有访问者都是匿名的。在Sitecore中存储匿名访问者的个性化详细信息6.4

我应该在哪里以及如何为每个访问者存储项目列表?

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

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

这被认为是最佳实践,并且我错过了任何可能的选择(在OMS中是否有某处存储这个选项?)。

+1

你的情况是非常平凡的,所以你不可能得到确切的答案。 我建议使用Google Analytics数据库,如果您想拥有大量访问者,则应避免使用商品。 –

回答

1

我们为客户做了类似的事情(除了我们必须坚持搜索查询,而不是用户首选项,但适用相同的原则)。 我们也有这样的“访问者的页面将需要作为一个固定链接访问,并且可以转发到另一个位访客看到相同内容”的要求(虽然没有明确使用GUID)

我们结束了,只是坚持用户的偏好查询字符串。在你的情况,例如:

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

,这最终将产生极大的相 URL的,所以你可以放置的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(querystring)中。 我们使用Protobuffer实现一些真正有效的序列化(较短的网址)

这样的:

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

当用户访问你的页面,只需要国家从查询字符串,反序列化,并填充页面与您需要的内容项目。 这也有一个好处,游客可以与其他用户分享他们的链接,他们都会看到相同的东西。

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

不是Sitecore的具体问题,顺便说一下:)

+0

被接受为答案,很好!祝你好运! – Stephan