我正在开展一个相当大的项目。我需要处理的情况有两种:1。一些值如API密钥,API调用的BaseURLs从DB中获取一次,并在解决方案的多个位置(在不同的类中)重新生成。 />
2.有些值使用API调用进行处理,有时可能会更改,因此我需要进行API调用以刷新这些值然后重新生成。
我的案例1的解决方案现在是create a staic constructor
从DB获取一次值并重复使用。这是一个好的解决方案吗?在这种情况下,最佳做法是什么?我该如何处理案例2?这种“缓存”的最佳实践是什么?
答案 0 :(得分:0)
创建一个名为CachedDataAccessor
的静态类,并在其中实现以下行为。
GetCachedData()
将返回API密钥,在您的情况下,Urls在第一次从db中获取数据时存储它的副本RefreshCachedData()
刷新过期的值并从db中获取它们。
此后,您还可以实现CacheSize
以允许缓存大小可配置。每当您需要数据时,请从CacheAccessor
答案 1 :(得分:0)
查看the classes in system.runtime.cahching
对于这两种情况,您都可以使用MemoryCache对象。
在第一种情况下,您可以将CacheItemPolicy的SlidingExpiration设置为小时,因此当它被点击时,它将不会从缓存中删除。
在第二种情况下,如果要将数据缓存一段时间,可以将AbsoluteExpiration设置为该时间。
如果您知道需要清除缓存的条件,您可以创建一个更改监视器,当缓存中的数据无效时,它将清除cashe项。