IMemberPartialViewCacheInvalidator
This section describes the IMemberPartialViewCacheInvalidator
interface, what it's default implementation does and how to customize it.
What is an IMemberPartialViewCacheInvalidator?
This interface is used to isolate the logic that invalidates parts of the partial view cache when a member is updated.
Why do we need to partially invalidate the partial view cache?
Razor templates may show data that is retrieved from a member object. Those templates might be cached by using the partial caching mechanism (for example, @await Html.CachedPartialAsync("member",Model,TimeSpan.FromDays(1), cacheByMember:true)
). When a member is updated, these cached partials must be invalidated to ensure updated data is shown.
Where is it used?
This interface is called from the member cache refresher (MemberCacheRefresher
), which is invoked every time a member is updated.
Details of the default implementation
Razor template partials are cached through a call to Html.CachedPartialAsync
with cacheByMember
set to true
. This will append the ID of the currently logged-in member with a marker to the partial view cache key. For example, -m1015-
.
When the ClearPartialViewCacheItems
method is called, it will clear all cache items that match the marker for the updated members.
If no member is logged in during caching, items with an empty member marker (for example, -m-
) are also cleared.
Customizing the implementation
You can replace the default implementation by removing it and registering your own in a composer.
public class ReplaceMemberCacheInvalidatorComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.Services.AddUnique<IMemberPartialViewCacheInvalidator, MyCustomMemberPartialViewCacheInvalidator>();
}
}
Last updated
Was this helpful?