類似Facebook或Twitter首頁的作法XD

 



fb或twitter的首頁就是一直吐出好像是使用者follow的東西或有興趣的東西

跟廣告

像fb手機版是兩個po一定有一個廣告

大概去年的樣子 是2~3個po一定有廣告


一開始覺得要吐出這東西要靠server去處理

就是準備好每個使用者的首頁要顯示出哪些po文

等使用者點到首頁 就開始顯示出這些準備好的po文 

然後在印出的過程 再穿插廣告


server要處理的話

就會消耗掉大量的$$ 如果使用者更多 po文更多的話

一定會非常可觀

而且要不時的準備好 因為新的po文會一直冒出 

所以能的話要更短的間隔準備好要吐出的po文


再來是使用者瀏覽的時候 要不斷更新他最後的瀏覽時間

藉此降低他對這po文的優先順序 

就是避免短時間 又重複又出在他的首頁


這些東西要server處理好 個人覺得很不科學噗

所以小弟自己想出了一個鳥做法

小弟不確定fb或twitter是不是也用一樣的概念 

但就目前想到的 這做法是最省錢最省時的


作法就是讓使用者的裝置 

client端處理要顯示的po文 

意思是server根本不管使用者的首頁要顯示甚麼


作法是使用者定期跟server撈取最新的po文id

例如假設小弟有follow兩三個AV女U好了

就像server要求 這3個女U的id 說從某個時間點例如2024-08-07之後

的po文有哪些id

只要id就好


接著把這些只有id的陣列 寫入client端的資料庫 indexedDB

意思就是client端有個po文的資料庫

這時候再對裡面所有的po文 傳送id到server

確認他最新的讚數 留言數 等等 用來計算priority的參數

取得到後

在client計算prioritry

計算好就 排序輸出


小弟推測fb的方式 應該是有一個function

他會固定從client端的資料庫吐出2篇po文  然後再搭配一個廣告

就是3個po文為一個單位

直接在首頁印出來

如果使用者繼續往下滑 就繼續呼叫這支function 繼續push到首頁


在這過程使用者會一直看到這些po文

就持續的更新使用者最後瀏覽的時間到client的資料庫

這東西也要當作priority計算的重要因子

才不會看過的po文短時間又印出來

而因為client知道哪些po文才剛顯示過 

更可以100%的機率排除才剛顯示的po文

server要處理這個的話 要傳送大量的排除id條件



但隨著時間一定會塞了不少資料在client端的DB

所以可能超過一周或兩周的po文id 就會被移除

意思是fb 或twitter

不論哪個po文多夯

超過一定的時間後 一定不會再看到 除非跑去他的個人頁


總之概念大概是用戶端有個資料庫

處理好priority唷唷噗