That’s the reason why I’m including the caching options taking advantage of WordPress transients in the next version. Transients allow us to store queried data for a period of time specified by user. That way, once we’ve run the plugin the first time it won’t need to loop through all blogs looking for posts again until the cache time expires.
This plugin was meant to pull only the most recent posts, however I’m aware some people use it to pull all posts from all blogs within their networks, and so far nobody has complained about performance issues.
I’m aware some developers have approached this creating custom tables, however I find this quite inconvenient for some reasons. Creating custom tables may lead to compatibility issues with other plugins, also taking all content from their default tables and putting everything into one table may negatively impact the overall site performance.
I prefer to use transients which is a native WordPress solution for keeping temporary data, without compromising performance and compatibility with third party plugins.
The original plugin from which Network Latest Posts was born used custom SQL queries to pull data. However, this added several limitations to the data we could pull from blogs and posts. I’d make code too clumsy and difficult to maintain. Native WordPress functions are better for three reasons IMHO: 1.- backwards compatibility and support for core upgrades. 2.- compatibility with third party plugins, which makes easy for others to interact with your plugin without too much hassle. 3.- WP Core team is always debugging and trying to find ways to improve performance, they already did so with switch_to_blog() for example. Plugins using native functions will be positively impacted whenever the core gets improvements.
Finally long time ago I received positive feedback from a user which switched from WPMUDev Post Indexer to Network Latest Posts, until this day I’ve not received any complains from him nor other users about experiencing speed or memory issues on their sites using NLP.
Cheers,
José SAYAGO.