Хранение данных персонализации для анонимных посетителей в Sitecore 6.4

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

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

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

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

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


person James Walford    schedule 10.10.2011    source источник
comment
Ваш случай очень нетривиален, поэтому точного ответа вы вряд ли получите. Я бы посоветовал использовать базу данных Analytics, вам следует избегать использования элементов, если вы предполагаете большое количество посетителей.   -  person Alexander Doroshenko    schedule 18.10.2011


Ответы (1)


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

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

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

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

так:

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

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

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

кстати, не конкретный вопрос sitecore :)

person Stephan    schedule 19.10.2011