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唷唷噗
沒有留言:
發佈留言