public function render($path, array $placeholders = [], $context = null, $isAjax = false)
    {
        if (isset($context)) {
            $this->setContext($context);
        }
        $this->scopes[spl_object_hash($this)] = $this;
        list($cacheKey, $cacheExpire, $cacheTags) = $this->calculateCacheParams($placeholders);
        // Get cache
        if (($resultCache = $this->getCacheContent($cacheKey)) !== false) {

            return $resultCache;
        }
        $result = $this->renderInternal($path, $placeholders);
        if (!$isAjax) {
            $result = implode("\n", [$this->beginPage(), $this->beginBody(), $result, $this->endBody(), $this->endPage()]);
        }

        // Set cache
        $this->setCacheContent($cacheKey, $result, $cacheExpire, $cacheTags ?: []);

        return $result;
    }