Hi Stephen,
No one that is currently actively maintaining Play was around when the cache API was first written, so we can only speculate.
I guess that it is due to zero or more of the following reasons:
* The API is backed by ehcache by default, which is blocking
* The API was copied from/based on the cache API from Play 1, which was blocking
* There wasn't enough time to come up with a decent non blocking API and implementation
It could be all three, I don't know. But I am quite sure that there was no good technical reason for it to be blocking.
We could rewrite it to be non blocking, that would be a good thing to do. But it's not high on our priorities, the fact is, for in memory caching, it's not hard to use spray-cache, you don't need an abstraction around it to use it in Play. For off heap caching, it's not hard to use any of the many non blocking redis or memcached java or scala drivers, you don't need an abstraction around them to use them in Play. If someone in the community were to decide to take on the task of writing a non blocking abstraction for caching in Play and provide a half decent in heap and off heap implementation for it, then we'd probably accept it.
Cheers,
James