Mastodon API: Preloading and normalization optimizations
- Try to normalize the activity instead of object wherever possible
- Put the
user
key on non-home timelines as well so bookmarks and thread mutes are preloaded there as well - Skip trying to get the user when rendering mentions if the id == as:Public or user's follower collection
- Preload the object when getting replied to activities and do not crash if it's not present
This almost solves the problem of Pleroma hammering the db with a lot of queries when rendering timelines, the things left are
- When rendering mentions and the user is not in cache, save it for later and request all uncached users in one go
- Somehow get rid of needing to get the latest follow activity to
detect the value of
requested
in a relationship. (create a database view for user relationship and cache it maybe?)