protected virtual void ClearCacheFor(IEnumerable <string> sitemapIds) { foreach (var sitemapId in sitemapIds) { SitemapCacheRegion.ExpireSitemap(sitemapId); } SitemapSearchCacheRegion.ExpireRegion(); }
public virtual async Task <IEnumerable <Sitemap> > GetByIdsAsync(string[] sitemapIds, string responseGroup = null) { if (sitemapIds == null) { throw new ArgumentNullException(nameof(sitemapIds)); } var cacheKey = CacheKey.With(GetType(), nameof(GetByIdsAsync), string.Join("-", sitemapIds.OrderBy(x => x)), responseGroup); return(await PlatformMemoryCache.GetOrCreateExclusiveAsync(cacheKey, async cacheEntry => { using (var repository = RepositoryFactory()) { var sitemapEntities = await repository.GetSitemapsAsync(sitemapIds, responseGroup); return sitemapEntities.Select(x => { var sitemap = x.ToModel(AbstractTypeFactory <Sitemap> .TryCreateInstance()); cacheEntry.AddExpirationToken(SitemapCacheRegion.CreateChangeToken(x.Id)); return sitemap; }).ToArray(); } })); }