Added a more sophisticated caching mechanism

* We now can generate a cache key based off of the compile data
  structure. This allows more precise caching (ie same page different
  locale).