I've noticed subsonic can be very very slow opening large directories. This is particularly noticeable for anyone using an app/client with the REST api. I can only assume it's because its loading the metadata (id3 tags, etc) from each file every time you browse the folder.
Caching the metadata into a database would be a great way to alleviate the problem. Simply check to see if the file size, path, and last-modified timestamp match the entry in the cache. If it does, then pull the metadata from the cache instead of parsing the data from each and every song every time you browse the folder. Every day or so (could be user specified), you could optimize the database based on which entries are accessed the most, and purge entries that havn't been accessed in a while (could also be a user specified value).
Maybe it could be possible to also have it prefetch the metadata when the server isn't particularly busy.
Edit: From what i gathered from staring at the code this morning, this feature is already implemented, ignore this post
