Example #1
0
        private void EvictMenuWidgetCaches(ContentContextBase context, MenuPart part)
        {
            if (context.Id == 0)
            {
                return;
            }

            // Get all the menu widgets who's menu contains this Menu Item, but only if the Output Cache Part has been bound to that Content Type
            var menuWidgetOutputCacheParts = _contentManager.Query <OutputCachePart>().ForType("MenuWidget").List();

            foreach (var outputCachePart in menuWidgetOutputCacheParts)
            {
                var menuWidgetPart = outputCachePart.ContentItem.As <MenuWidgetPart>();

                if (menuWidgetPart != null && menuWidgetPart.MenuContentItemId == part.Menu.Id)
                {
                    _signals.Trigger(OutputCachePart.ContentSignalName(menuWidgetPart.Id));
                }
            }
        }
Example #2
0
        private dynamic BuildCachedWidgetShape(WidgetPart widgetPart, ControllerContext controllerContext)
        {
            var reinstateResources = true;

            var cacheKey    = ComputeCacheKey(widgetPart, controllerContext);
            var cachedModel = _cacheManager.Get(cacheKey, context =>
            {
                context.Monitor(_signals.When(OutputCachePart.GenericSignalName));
                context.Monitor(_signals.When(OutputCachePart.ContentSignalName(widgetPart.Id)));
                context.Monitor(_signals.When(OutputCachePart.TypeSignalName(widgetPart.ContentItem.ContentType)));

                reinstateResources = false;

                return(_ouputCachedWidgetsService.CaptureWidgetOutput(() => RenderWidget(widgetPart)));
            });

            if (reinstateResources)
            {
                ReinstateResources(cachedModel);
            }

            return(_orchardServices.New.RawOutput(Content: cachedModel.Html));
        }
 private void EvictCache(UpdateContentContext context, OutputCachePart part)
 {
     _signals.Trigger(OutputCachePart.ContentSignalName(part.Id));
 }