Currently, the views data cache class rebuilds the data too often, so if table data is not stored on the class, it will rebuild the data (hook_views_data) rather than trying to retrieve the cached data for all tables. This can then be used to populate on the class storage, and then saved as a per table entry too. This should stop alot of rebuilds.
Also, If the data needs to be re cached, it will be set for all tables every time. We want this to just cache the tables we have requested. This will then reduce the overhead on requests when the view cache is rebuilt. Which can take a while when there is alot of tables in the info data.
Let's tidy this class up by trying to firstly retrieve data from the cache first, rather than invoking again, and changing the class logic to only cache tables that have been requested and need to be rebuilt.