Caching Database Info

Hey! Just set up MPD on my phone for the first time in awhile and am trying out MAFA. I have my phone set up as an MPD satellite that pulls from the MPD database on my home server, and the actual music files from a WebDAV server on the same machine. From interacting with the app (and knowing some of how MPD works) it seems that the relevant data is pulled from the database on-demand – e.g. whenever I select an artist, the metadata for the artists’s albums are loaded, then when I choose an album the track metadata is loaded, etc. Additionally, I don’t know much about how MPD satellites work, but I assume (based on load times + the size of my .mpd/database file) that none of the database info is cached locally and all of those queries are proxied to the server every time.

My mobile network is spotty a lot of the time, so all of this results in a poor/unusable experience when I’m moving around/not on wifi. Browsing around my library is a pain, while playing an actual song can often perform fine. I’m curious what you think about adding the ability to cache more of the database info in the app, potentially by loading everything at startup and only reloading when the user requests it. I know there are a few downsides to this (enough RAM has to be available, the database could be out of sync with any music it tries to play, etc.), but in my case I’m the only one managing the music server so I know when the changes happen + can reload the app accordingly.

Hopefully this all makes sense, I wrote a desktop MPD frontend myself (GitHub - dgrisham/bbmp) and I know the tradeoffs on mobile are different. Curious of any thoughts from the devs + additional considerations that come into play here.

MAFA does cache the latest results in memory but it is quick to free this cache when not being used to save resources.
I think you’ll get better results by connecting directly to the remote MPD server without the satellite.