Optimise fetching user likes (Like Reddit) system design

I have a running website that is very similar to Reddit/9GAG, where users can post and upvote/downvote multiple posts. Everything is built using MongoDB, and here are the Post and PostVote schema sketch:

// Post
const schema = new mongoose.Schema<PostInfo>({
  _id: { type: String, required: true, alias: 'postID' },
  userID: { type: String, required: true }
// Amongst other fields such as vote counters, etc

// PostVote
const schema = new mongoose.Schema<PostVoteInfo>({
  _id: { type: String, required: true, alias: 'postVoteID' },
  vote: { type: Number, required: true }

A vote’s id looks like so: {userID}_{postID} , and the vote field could be downvote (-1), upvote (1), or no vote (0), and each row has a TTL that lasts for 6 months, because all the posts in my website will be changed to archived state after 6 months from creation, which disable users to vote and commenting. I have a queue system that updates the post votes, and everything works accurately.

Here is the current approach on how users retrieve the votes, this implementation is very straight forward but will produce redundant fetches on posts that the user doesn’t interact with.:

  1. User fetches 8 posts at a time (pagination)
  2. User will fetch 8 PostVote for these posts, no matter if the PostVote exists or not
  3. Cache the votes for 48 hours (in LocalStorage / IndexedDB)

I looked through the 9GAG website, and they do it very differently. Apparently the backend will fetch hundreds of votes that the user did most recently (sort descending by user voting time), but I’m not sure if they do pagination (e.g. max 500 votes every fetch).

If you have any suggestion to optimise my current approach, please let me know! (P.S. all the fetched posts will always be sorted descending by create time)