.Net Core中的CacheDependency类,用于在缓存和文件之间建立依赖关系

时间:2018-02-22 13:10:48

标签: caching asp.net-core .net-core asp.net-core-2.0 .net-standard

.Net Core中是否有CacheDependency类?似乎还没有实现。

我们有替代或解决方法吗?或者是否有关于此课程实施的未来计划?

这是.net框架支持的非常有用的功能,如何在没有它的情况下在缓存和文件之间建立依赖关系?

1 个答案:

答案 0 :(得分:3)

您应该能够使用ChangeToken来实现类似于CacheDependency的功能。您必须使用其中一个文件提供程序来获取IChangeToken的实例。然后,此令牌可用作缓存的参数。

非常基本的样本:

IMemoryCache cache = GetCache();
string fileContent = GetFileContent("sample.txt");

// instance of file provider should be ideally taken from IOC container
var fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()); 

IChangeToken token = _fileProvider.Watch("sample.txt");

// file will be removed from cache only if it is changed
var cacheEntryOptions = new MemoryCacheEntryOptions()
            .AddExpirationToken(changeToken);

// put file content into cache 
cache.Set("sample.txt", fileContent, cacheEntryOptions);

详细说明可在microsoft documentation for change tokens

中找到