Imran,
Interesting question. One observation is that you could use the factory technique I am using in the Data Access tutorial to get an object from a string setting. That may perform better than reflection. Regardless, if you watch the rest of my Data Access series and download the code, it gives you specific examples on how to cache an object or list of objects in DNN. Typically for module data, you would use the module id as part of the cache scope key. But you can make it the tabid which would cache by page if you need to. Check out the first two videos of this series and let me know if you have any more questions: http://www.dnnhero.com/Premium/Tutorial/tabid/259/ArticleID/219/DNN-Data-Access-Techniques-DAL-Part-1-5.aspx