This section describes the IMemberPartialViewCacheInvalidator
interface, what it's default implementation does and how to customize it.
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.
This interface is called from the member cache refresher (MemberCacheRefresher
), which is invoked every time a member is updated.
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.
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>();
}
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4