2011-10-10 38 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