#請益 PHP 貼文系統,如何調用 API 取得熱門文章而不重複?

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