public function getCacheKey($mixed)
    {
        if ($mixed instanceof ConcretePage) {
            $collectionPath = trim((string) $mixed->getCollectionPath(), '/');
            if ($collectionPath !== '') {
                return urlencode($collectionPath);
            }
            $cID = $mixed->getCollectionID();
            if ($cID && $cID == ConcretePage::getHomePageID()) {
                return '!' . $cID;
            }
        } elseif ($mixed instanceof Request) {
            $path = trim((string) $mixed->getPath(), '/');
            if ($path !== '') {
                return urlencode($path);
            }

            return '!' . ConcretePage::getHomePageID();
        } elseif ($mixed instanceof PageCacheRecord) {
            return $mixed->getCacheRecordKey();
        }
    }