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)); } } }
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)); }