private static void RenderContentPage(CmsPageRequest rt) { var builder = new PageCompositionBuilder(); var pageComposition = builder.CreatePageComposition(rt.CmsPage); var fragmentMode = rt.PageRenderMode == PageRenderMode.PageDesigner ? FragmentRenderMode.PageDesigner : FragmentRenderMode.Readonly; var cre = new BatchingFragmentRenderer(); var batch = cre.Execute(pageComposition, fragmentMode); var cache = Dependency.Resolve <CmsPageContentOutputCacheProvider>(); foreach (var item in pageComposition.RootElement.GetAllDescendents()) { if (!string.IsNullOrWhiteSpace(item.CacheKey)) { cache.AddToCache(item.CacheKey, new CachedPageContentOutput { InternalLayout = (item as IHasInternalLayout)?.GetInternalLayout(), RenderingResult = batch.RenderingResults[item.ContentId] }); } } var compositor = new RenderFragmentCompositor(pageComposition, batch); var writer = new HtmlOnlyComposedHtmlWriter(); compositor.WriteComposedFragments(fragmentMode, writer); HttpContext.Current.Response.Write(writer.ToString()); }