/// <summary> /// Refreshes the publish snapshot service and if there are published changes ensures that partial view caches are refreshed too /// </summary> /// <param name="service"></param> /// <param name="appCaches"></param> /// <param name="payloads"></param> internal static void NotifyPublishedSnapshotService(IPublishedSnapshotService service, AppCaches appCaches, JsonPayload[] payloads) { service.Notify(payloads, out _, out var publishedChanged); if (payloads.Any(x => x.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) || publishedChanged) { // when a public version changes appCaches.ClearPartialViewCache(); } }
public static void RefreshContentTypes(AppCaches appCaches) { // we could try to have a mechanism to notify the PublishedCachesService // and figure out whether published items were modified or not... keep it // simple for now, just clear the whole thing appCaches.ClearPartialViewCache(); appCaches.IsolatedCaches.ClearCache <PublicAccessEntry>(); appCaches.IsolatedCaches.ClearCache <IContent>(); }
private void ClearCache(params JsonPayload[] payloads) { AppCaches.ClearPartialViewCache(); var memberCache = AppCaches.IsolatedCaches.Get <IMember>(); foreach (var p in payloads) { _idKeyMap.ClearCache(p.Id); if (memberCache) { memberCache.Result.Clear(RepositoryCacheKeys.GetKey <IMember, int>(p.Id)); memberCache.Result.Clear(RepositoryCacheKeys.GetKey <IMember, string>(p.Username)); } } }
public override void Refresh(JsonPayload[] payloads) { if (payloads == null) { return; } _publishedSnapshotService.Notify(payloads, out var anythingChanged); if (anythingChanged) { AppCaches.ClearPartialViewCache(); AppCaches.RuntimeCache.ClearByKey(CacheKeys.MediaRecycleBinCacheKey); var mediaCache = AppCaches.IsolatedCaches.Get <IMedia>(); foreach (var payload in payloads) { if (payload.ChangeTypes == TreeChangeTypes.Remove) { _idKeyMap.ClearCache(payload.Id); } if (!mediaCache) { continue; } // repository cache // it *was* done for each pathId but really that does not make sense // only need to do it for the current media mediaCache.Result.Clear(RepositoryCacheKeys.GetKey <IMedia, int>(payload.Id)); mediaCache.Result.Clear(RepositoryCacheKeys.GetKey <IMedia, Guid?>(payload.Key)); // remove those that are in the branch if (payload.ChangeTypes.HasTypesAny(TreeChangeTypes.RefreshBranch | TreeChangeTypes.Remove)) { var pathid = "," + payload.Id + ","; mediaCache.Result.ClearOfType <IMedia>((_, v) => v.Path.Contains(pathid)); } } } base.Refresh(payloads); }