public function cache( $time = null, $e_tag = null )
	{
		if( $time instanceof \DateTime )
		{
			$time = $time->getTimestamp() - time();
		}
		else if( null === $time )
		{
			$time = 3600*24*7; // default cache 7 day
		}
		else
		{
			$time = (int) $time;
		}

		// Invalid timeout
		if( $time < 1 )
		{
			return $this;
		}

		$this->header('Cache-Control', 'public, max-age=' . $time);
		if( null !== $e_tag )
		{
			$this->header("ETag", $e_tag);
		}

		return $this;
	}