be defensive when reading cache, in case it's not defined