Make the render cache to work with all the Data Provider

There are several `TODO` in the code base regarding this.
Can you explain what you mean by "split the cache"?