public function setCachePolicy(string $policy)
    {
        if ($policy !== self::CACHE_DISABLE && $policy !== self::CACHE_PUBLIC && $policy !== self::CACHE_PRIVATE)
            throw new \InvalidArgumentException("Invalid cache policy: " . $policy);

        $this->cache_policy = $policy;
        return $this;
    }