public T Get <T>(string key, string dependentFilePath, Func <string, object> resolveValue) where T : class { FileCacheResolver resolver; if (!resolvers.TryGetValue(key, out resolver)) { resolver = new FileCacheResolver { Key = key, FileName = dependentFilePath, Resolver = resolveValue }; resolvers[key] = resolver; } var value = HttpRuntime.Cache[key]; if (value == null) { value = resolver.Resolver(resolver.FileName); HttpRuntime.Cache.Insert(key, value, new CacheDependency(resolver.FileName)); } return(value as T); }
public void Init() { root = SetupDirectory("Self", new[] { 1, 2, 0, 4, 5, 0, 0 }); nearest = SetupDirectory("Nearest", new[] { 11, 12, 13, 14, 15, 0, 0 }); master = SetupDirectory("Mester", new[] { 21, 22, 23, 24, 25, 26, 0 }); reserved = SetupDirectory("Reserved", new[] { 31, 32, 33, 34, 35, 36, 37 }); web = SetupDirectory("Web", new[] { 41, 42, 43, 44, 45, 46, 46, 48 }); cache = new FileCacheResolver(root, nearest, new FileCacheSource(master) { IsMaster = true }, reserved); }
/// <summary> /// Установить источник в виде кэша, завязанного на другие источники /// </summary> /// <param name="key"></param> /// <param name="config"></param> public void SetCachedRoot(string key, XElement config) { caches[key] = new FileCacheResolver(config); }