Хранение данных персонализации для анонимных посетителей в Sitecore 6.4 - PullRequest
1 голос
/ 10 октября 2011

Мы используем небольшое приложение (Flash), чтобы посетители могли определить свои предпочтения в отношении контента.Конечным результатом приложения является список Предметов, который мы представляем пользователю как «Контент, который вас может заинтересовать» (представьте, что он похож на «Страницу, которую вы создали»).Страница посетителя должна быть доступна в виде постоянной ссылки с использованием GUID и может быть перенаправлена ​​на другой Vistor, чтобы увидеть тот же контент.У нас нет логина или членства, поэтому все посетители анонимны.

Где и как я должен хранить список элементов для каждого посетителя?

В настоящее время мы рассматриваем создание элемента в дереве содержимого.для каждой страницы посетителя, которая будет просто содержать ссылки на выбранные элементы контекста, в которых заинтересован пользователь. Мы обеспокоены тем, что это приведет к большому количеству элементов контента, которые могут повлиять на производительность решения в целом.

Другими возможностями было бы использование файловой системы (возможно, одного XML-файла) или поиска SQL.

Что считается наилучшей практикой для этого, и я пропустил любые возможные варианты (есть ли где-то вOMS для хранения этого?).

1 Ответ

1 голос
/ 19 октября 2011

Мы сделали что-то похожее для клиента (за исключением того, что нам пришлось сохранять поисковые запросы, а не пользовательские настройки, но применяются те же принципы).У нас также было требование, что « страница посетителя должна быть доступна как постоянная ссылка и может быть перенаправлена ​​на другой vistor для просмотра того же контента » (хотя и не с использованием GUID).

То, что мы в итоге сделали, это просто сохранение пользовательских настроек в строке запроса.В вашем случае, например:

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

конечно, это в конечном итоге приведет к созданию ginormous URL, так что вы можете поместить направляющие в простой объект 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 для достижения действительно эффективной сериализации (более короткие URL)

, например:

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

Когда пользователь посещает вашу страницу, просто возьмите состояние из строки запроса, десериализуйте его изаполнить страницу необходимыми элементами контента.Это также дает то преимущество, что посетители могут делиться своими ссылками с другими пользователями, и они все будут видеть один и тот же материал.

для получения дополнительной информации о protofbuffer, см. http://code.google.com/p/protobuf-net/wiki/GettingStarted

, а неМежду прочим, конкретный вопрос на сайте:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...