我正在讀更多的Quora的答案排名算法,並遇到下列功能,我試圖扭轉工程師提出:跟蹤網頁內容在頁面中瀏覽次數?
http://blog.quora.com/Improved-Answer-Ranking-Follow-Up
「有新的答案排名,我們不能僅僅着眼於絕對數量的upvotes和downvotes;我們也在考慮一個答案已經收到的關注程度,例如:如果20個人看到答案,並且所有20個人都贊成它,這可能是一個更強的質量信號比如果成千上萬的人看到了一個答案,但只有100個人滿意。「
Quora的小背景:它與佈局中的Stack Exchange非常相似。有人發佈了一個問題,人們回答了答案,並且該網站將所有答案排列/顯示在一個頁面中。
鑑於所有的答案都編譯成一個頁面,Quora會如何跟蹤每個單個答案獲得的視圖數量?
潛在的假設:
- 每個人的答案被存儲在數據庫中,與它有多少次被取出一個 計數器在一起。
- 當用戶第一次訪問該頁面時,只有前幾個答案是 從數據庫中獲取並顯示在頁面上。當用戶向下滾動 時,通過額外的GET 請求動態獲取更多答案。
- 每次從數據庫中提取答案時,數據庫 計數器都會增加,從而跟蹤查看者看到答案 的次數。
關注這種方法:
- 每一個GET請求,現在需要數據庫的更新,這將 顯著惡化數據庫工作負載。
- 用戶加載 頁面後,用戶不用一次性批量提取10-20個答案,而是每次輸入012-即可獲取1-2個答案,用戶可滾動到頁面底部。這會加重 延遲和用戶體驗,因爲用戶必須保持 等待顯示其他內容。
這些真正的擔憂是否會隨着規模而爆發?或者他們可以被管理?
感謝您的教育猜測。你有沒有鏈接到資源如何實現**「通過檢查滾動事件,如果某些元素已經變得可見。」** 我的幼稚REST的理解是你發送數據到客戶端的GET請求,除非他們向您發送另一個GET/PUT/POST請求,否則您將不知道數據如何消耗。 REST接口如何收集有關**滾動事件的信息**以及**「某些元素已變得可見」**? – RvPr
那麼,任何現場滾動庫/教程將展示如何識別用戶何時到達某個元素。一旦客戶端腳本知道,它可以發佈到一個「查看」API。在沒有持續連接的情況下(例如websocket),它將更有可能分批發布,而不是每個單獨的視圖。實際的服務就像a/views資源,所以客戶端發送到/ views。該請求可能會包含一些關於用戶,客戶端平臺和查看上下文的詳細信息,例如包含網頁網址。 – mahemoff