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

发布于 2024-12-09 12:38:23 字数 397 浏览 0 评论 0原文

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

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

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

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

什么被认为是最佳实践,我是否错过了任何可能的选项(OMS 中是否有某个地方可以存储它?)。

We're using a small app (Flash) to allow visitors to identify their content preferences. The end result of the app is a list of Items, which we present to the user as "Content you might be interested in" (think of it as similar to Amazon's "Page That You Built"). The visitor's page will need to be accessible as a permalink using a GUID, and can be forwarded to another vistor to see the same content. We have no login or membership, so all visitors are anonymous.

Where and how should I store the item list for each visitor?

Currently we are looking at creating an item in the content tree for each visitor page, which will simply hold references to the selected contet items the user is interested in. We are worried this will lead to a large amount of content items which might impact on performance of the solution as a whole.

Other possibilities would be to use the file system (possibly a single XML file) or an SQL lookup.

What is regarded as best practice for this, and have I missed any possible options (is there somewhere in the OMS to store this?).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稚气少女 2024-12-16 12:38:24

我们已经为客户做了类似的事情(除了我们必须保留搜索查询,而不是用户首选项,但适用相同的原则)。
还要求“访问者的页面需要作为永久链接进行访问,并且可以转发给其他访问者以查看相同的内容”(尽管没有专门使用 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(查询字符串)中。
我们使用 Protobuffer 来实现一些非常有效的序列化(较短的 url),

如下所示:

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

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

有关 protofbuffer 的详细信息,请参阅:http://code.google.com/p 顺便说一句, /protobuf-net/wiki/GettingStarted

不是 sitecore 特定问题:)

We've done something similar for a client (except we had to persist search queries, not user preferences, but the same principles apply).
We also had the requirement that "the visitor's page will need to be accessible as a permalink, and can be forwarded to another vistor to see the same content" (though not specifically using a GUID.)

What we ended up doing, was just persisting the user's preferences in the querystring. In your case, for example:

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

of course, this is eventually going to produce ginormous URL's, so you could place the guids in a simple DTO object

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

or even

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

Then we serialized this 'state object' to a string. and stuck that into the url (querystring).
We used Protobuffer to achieve some really efficient serialization (shorter urls)

like this:

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

When a user visits your page, just take the state from the querystring, deserialize it, and populate the page with the content items you need.
This also has the benefit that visitors can share their link with other users, and they'll all see the same stuff.

for more information on protofbuffer, see: http://code.google.com/p/protobuf-net/wiki/GettingStarted

not a sitecore specific question, by the way :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文