cached_asset() should take a block
Use hash semantics for cached assets