Пример #1
0
 protected virtual void ClearCacheFor(IEnumerable <string> sitemapIds)
 {
     foreach (var sitemapId in sitemapIds)
     {
         SitemapCacheRegion.ExpireSitemap(sitemapId);
     }
     SitemapSearchCacheRegion.ExpireRegion();
 }
Пример #2
0
        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();
                }
            }));
        }