[ 概述 ]
小弟最近頭殼撞到,正在試著自幹一個社群網站後端,前端採用 Vue3 框架。
當前已經將登入系統寫完,貼文的部分也建好 db table 架構
大概是這樣(欄位 title 感覺不必要,可能會移除):
我目前採用的方式是讓討論區頁面在載入後,自動 ajax 請求 /api/forum/posts 去取得文章(order by datetime desc),並將最後一篇文章 id 存入 before 變數。在使用者滑動 scroll bar 到最下方時,再次請求該 api,並附上 before 參數,以此迭代文章。
但這麼做有個缺點... 就是只能是按照順序將文章輸出...
例如上述例子是以文章的發文先後順序,由新至舊排列。
================================
[ 問題 ]
我知道「熱門文章」的設計通常是藉由其他參數(如瀏覽數、按讚數等)來加入演算法中運算權重,以此得出排名。
但,我該如何在調用 API 進行熱門文章迭代時,保證不出現重複文章?
畢竟若使用者在頁面停留過久,再次請求文章時,可能在此期間文章的權重已經被改變,進而導致 api 回應了重複的文章。
================================
[ 當前有疑慮的思路 ]
走投無路的我請教了 AI 幫忙:
按照上述建議,看起來我必須在頁面中,給每位請求者標記已經請求過的文章,然後由 api 那邊去過濾。這部分可以把文章 id 塞入 cookie,但會非常大量就是了(?
感覺稍微有點不實際,並且衍伸一個問題是,api 那邊收到一堆即將要過濾的 id 後,sql 該如何寫才能不摧毀效能呢?