Cache keys use absolute URI instead of path, tests updated and refactored for DRY