Make the render cache to work with all the Data Provider

There are several `TODO` in the code base regarding this.
It means having different versions of the cache due to generating different cache ids.

This is the bug I was referring.