Ejemplo n.º 1
0
        private List <ConfigurationSetting> GetModuleSettingsAndStoreInCacheIfPossible(int moduleId)
        {
            _logger.LogDebug("{0}   {1} Загружаем настройки кэширования для конкретного модуля", "GetModuleSettingsAndStoreInCacheIfPossible", moduleId);
            var moduleLifeTimeInMinutes = _appSettings.DefaultCacheLifeTimeInMinutes;
            var module = _db.Modules.FirstOrDefault(t => t.Id == moduleId);

            if (module?.ModuleCacheLifeTimeInMinutes != null)
            {
                if (module.ModuleCacheLifeTimeInMinutes == 0)
                {
                    return(_db.Settings.Where(t => t.ModuleId == moduleId).ToList());
                }
                else
                {
                    moduleLifeTimeInMinutes = module.ModuleCacheLifeTimeInMinutes.Value;
                }
            }

            var settingsFromDb = _settingsCache.GetAndStore(moduleId, () =>
            {
                var settings          = _db.Settings.Where(t => t.ModuleId == moduleId);
                var cacheableSettings = new CacheableList <ConfigurationSetting>(settings, moduleLifeTimeInMinutes);
                return(cacheableSettings);
            });

            _logger.LogDebug("{0}   {1} Возвращаем найденный в БД результат.", "GetModuleSettingsAndStoreInCacheIfPossible", moduleId);
            return(settingsFromDb);
        }
Ejemplo n.º 2
0
        private CacheableList <ConfigurationSetting> GetOrStoreGlobalSettings()
        {
            var moduleId = 0;

            if (_settingsCache.TryGetCacheValue(moduleId, out var cachedSettings))
            {
                _logger.LogDebug("{0}   {1} Данные найдены в кэше. Проверяем политики кэширования.", "GetOrStoreGlobalSettings", moduleId);
                if (!cachedSettings.Any(t => t.IsExpired(cachedSettings.CacheEntryLifeTimeInMinutes)))
                {
                    _logger.LogDebug("{0}   {1} Возвращаем данные из кэша", "GetOrStoreGlobalSettings", moduleId);
                    return(cachedSettings);
                }
            }

            var settingsFromDb = _settingsCache.GetAndStore(moduleId, () =>
            {
                var settings          = _db.Settings.Where(t => t.ModuleId == null);
                var cacheableSettings = new CacheableList <ConfigurationSetting>(settings, _appSettings.DefaultCacheLifeTimeInMinutes);
                return(cacheableSettings);
            });

            _logger.LogDebug("{0}   {1} Возвращаем найденный в БД результат.", "GetOrStoreGlobalSettings", moduleId);
            return(settingsFromDb);
        }