Completes: U4-3937 Ensure media is indexed across all servers in LB environment with Distributed Cache calls
for members
This commit is contained in:
@@ -596,22 +596,22 @@ namespace Umbraco.Web.Cache
|
||||
#endregion
|
||||
|
||||
#region Media event handlers
|
||||
static void MediaServiceTrashing(IMediaService sender, Core.Events.MoveEventArgs<IMedia> e)
|
||||
static void MediaServiceTrashing(IMediaService sender, MoveEventArgs<IMedia> e)
|
||||
{
|
||||
DistributedCache.Instance.RemoveMediaCache(false, e.Entity);
|
||||
}
|
||||
|
||||
static void MediaServiceMoving(IMediaService sender, Core.Events.MoveEventArgs<IMedia> e)
|
||||
static void MediaServiceMoving(IMediaService sender, MoveEventArgs<IMedia> e)
|
||||
{
|
||||
DistributedCache.Instance.RefreshMediaCache(e.Entity);
|
||||
}
|
||||
|
||||
static void MediaServiceDeleting(IMediaService sender, Core.Events.DeleteEventArgs<IMedia> e)
|
||||
static void MediaServiceDeleting(IMediaService sender, DeleteEventArgs<IMedia> e)
|
||||
{
|
||||
DistributedCache.Instance.RemoveMediaCache(true, e.DeletedEntities.ToArray());
|
||||
}
|
||||
|
||||
static void MediaServiceSaved(IMediaService sender, Core.Events.SaveEventArgs<IMedia> e)
|
||||
static void MediaServiceSaved(IMediaService sender, SaveEventArgs<IMedia> e)
|
||||
{
|
||||
DistributedCache.Instance.RefreshMediaCache(e.SavedEntities.ToArray());
|
||||
}
|
||||
@@ -619,27 +619,21 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
#region Member event handlers
|
||||
|
||||
static void MemberServiceDeleted(IMemberService sender, Core.Events.DeleteEventArgs<IMember> e)
|
||||
static void MemberServiceDeleted(IMemberService sender, DeleteEventArgs<IMember> e)
|
||||
{
|
||||
foreach (var m in e.DeletedEntities.ToArray())
|
||||
{
|
||||
DistributedCache.Instance.RemoveMemberCache(m.Id);
|
||||
}
|
||||
DistributedCache.Instance.RemoveMemberCache(e.DeletedEntities.ToArray());
|
||||
}
|
||||
|
||||
static void MemberServiceSaved(IMemberService sender, Core.Events.SaveEventArgs<IMember> e)
|
||||
static void MemberServiceSaved(IMemberService sender, SaveEventArgs<IMember> e)
|
||||
{
|
||||
foreach (var m in e.SavedEntities.ToArray())
|
||||
{
|
||||
DistributedCache.Instance.RefreshMemberCache(m.Id);
|
||||
}
|
||||
DistributedCache.Instance.RefreshMemberCache(e.SavedEntities.ToArray());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Member group event handlers
|
||||
|
||||
static void MemberGroupService_Deleted(IMemberGroupService sender, Core.Events.DeleteEventArgs<IMemberGroup> e)
|
||||
static void MemberGroupService_Deleted(IMemberGroupService sender, DeleteEventArgs<IMemberGroup> e)
|
||||
{
|
||||
foreach (var m in e.DeletedEntities.ToArray())
|
||||
{
|
||||
@@ -647,7 +641,7 @@ namespace Umbraco.Web.Cache
|
||||
}
|
||||
}
|
||||
|
||||
static void MemberGroupService_Saved(IMemberGroupService sender, Core.Events.SaveEventArgs<IMemberGroup> e)
|
||||
static void MemberGroupService_Saved(IMemberGroupService sender, SaveEventArgs<IMemberGroup> e)
|
||||
{
|
||||
foreach (var m in e.SavedEntities.ToArray())
|
||||
{
|
||||
|
||||
@@ -256,11 +256,33 @@ namespace Umbraco.Web.Cache
|
||||
#endregion
|
||||
|
||||
#region Member cache
|
||||
|
||||
/// <summary>
|
||||
/// Refreshes the cache among servers for a member
|
||||
/// </summary>
|
||||
/// <param name="dc"></param>
|
||||
/// <param name="members"></param>
|
||||
public static void RefreshMemberCache(this DistributedCache dc, params IMember[] members)
|
||||
{
|
||||
dc.Refresh(new Guid(DistributedCache.MemberCacheRefresherId), x => x.Id, members);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes the cache among servers for a member
|
||||
/// </summary>
|
||||
/// <param name="dc"></param>
|
||||
/// <param name="members"></param>
|
||||
public static void RemoveMemberCache(this DistributedCache dc, params IMember[] members)
|
||||
{
|
||||
dc.Remove(new Guid(DistributedCache.MemberCacheRefresherId), x => x.Id, members);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Refreshes the cache among servers for a member
|
||||
/// </summary>
|
||||
/// <param name="dc"></param>
|
||||
/// <param name="memberId"></param>
|
||||
[Obsolete("Use the RefreshMemberCache with strongly typed IMember objects instead")]
|
||||
public static void RefreshMemberCache(this DistributedCache dc, int memberId)
|
||||
{
|
||||
dc.Refresh(new Guid(DistributedCache.MemberCacheRefresherId), memberId);
|
||||
@@ -271,6 +293,7 @@ namespace Umbraco.Web.Cache
|
||||
/// </summary>
|
||||
/// <param name="dc"></param>
|
||||
/// <param name="memberId"></param>
|
||||
[Obsolete("Use the RemoveMemberCache with strongly typed IMember objects instead")]
|
||||
public static void RemoveMemberCache(this DistributedCache dc, int memberId)
|
||||
{
|
||||
dc.Remove(new Guid(DistributedCache.MemberCacheRefresherId), memberId);
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Umbraco.Web.Cache
|
||||
/// <remarks>
|
||||
/// This is not intended to be used directly in your code and it should be sealed but due to legacy code we cannot seal it.
|
||||
/// </remarks>
|
||||
public class MemberCacheRefresher : CacheRefresherBase<MemberCacheRefresher>
|
||||
public class MemberCacheRefresher : TypedCacheRefresherBase<MemberCacheRefresher, IMember>
|
||||
{
|
||||
|
||||
protected override MemberCacheRefresher Instance
|
||||
@@ -44,6 +44,18 @@ namespace Umbraco.Web.Cache
|
||||
base.Remove(id);
|
||||
}
|
||||
|
||||
public override void Refresh(IMember instance)
|
||||
{
|
||||
ClearCache(instance.Id);
|
||||
base.Remove(instance);
|
||||
}
|
||||
|
||||
public override void Remove(IMember instance)
|
||||
{
|
||||
ClearCache(instance.Id);
|
||||
base.Remove(instance);
|
||||
}
|
||||
|
||||
private void ClearCache(int id)
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.ClearPartialViewCache();
|
||||
|
||||
Reference in New Issue
Block a user