在大型项目中缓存值的最佳实践

时间:2014-03-07 08:36:19

标签: c# asp.net .net rest

我正在开展一个相当大的项目。我需要处理的情况有两种:1。一些值如API密钥,API调用的BaseURLs从DB中获取一次,并在解决方案的多个位置(在不同的类中)重新生成。 />
2.有些值使用API​​调用进行处理,有时可能会更改,因此我需要进行API调用以刷新这些值然后重新生成。

我的案例1的解决方案现在是create a staic constructor从DB获取一次值并重复使用。这是一个好的解决方案吗?在这种情况下,最佳做法是什么?我该如何处理案例2?这种“缓存”的最佳实践是什么?

2 个答案:

答案 0 :(得分:0)

创建一个名为CachedDataAccessor的静态类,并在其中实现以下行为。

  1. GetCachedData()将返回API密钥,在您的情况下,Urls在第一次从db中获取数据时存储它的副本
  2. RefreshCachedData()刷新过期的值并从db中获取它们。 此后,您还可以实现CacheSize以允许缓存大小可配置。
  3. 每当您需要数据时,请从CacheAccessor

    中获取数据

答案 1 :(得分:0)

查看the classes in system.runtime.cahching

对于这两种情况,您都可以使用MemoryCache对象。

在第一种情况下,您可以将CacheItemPolicy的SlidingExpiration设置为小时,因此当它被点击时,它将不会从缓存中删除。

在第二种情况下,如果要将数据缓存一段时间,可以将AbsoluteExpiration设置为该时间。

如果您知道需要清除缓存的条件,您可以创建一个更改监视器,当缓存中的数据无效时,它将清除cashe项。