Turning on environment caching by default sounds potentially dangerous, unless I'm misunderstanding something? You need some kind of post-receive hook or tool to invalidate the given environment's cache, otherwise changes will never be picked up by Puppet server.