在WebApi中数据可能已更改时,缓存如何工作

时间:2015-09-09 09:05:09

标签: caching asp.net-web-api

我对缓存的工作方式有一个基本的错误理解,因为我所读到的任何地方都说它可以帮助提高性能,但我不能在我的生活中看到在我的情况下情况会如何。< / p>

我目前在Microsoft Azure上有一个MVC.NET WebApi,它向客户端返回各种信息。但是,客户希望确保他们拥有最新信息,因此他们并不真正需要过时的数据。这样说,数据并不总是会改变,因此通常情况下请求之间的数据是相同的。

缓存是否允许在性能方面改进对WebApi的调用?我没有看到如何启用缓存,因为我冒着向用户提供旧的重新冗余数据的风险。

当一个网站被一次击中数百次时,缓存是否值得?

1 个答案:

答案 0 :(得分:1)

这确实取决于几个因素。

  • 正如您所说,API被调用的频率如何?
  • 客户认为陈旧数据是什么?
  • 你能说出缓存中的数据已经过时了吗?
  • 你是否被指控 如果避免数据检索,CPU / db的使用会减少吗?

我希望有更多的方法,但这些是我们想到的。

如果不经常调用API,则可能不值得缓存输出。

例如,对于我在web api输出方面所做的缓存,api一直在提供来自另一个系统定期更新的XML文件的数据。在这种情况下,我可以将文件反序列化为类型化对象,并使用文件更改监视器对该对象进行内存缓存,该文件更改监视器会在文件更改时使缓存项无效。 请参阅HostFileChangeMonitorCacheItemPolicyMemoryCache 我只使用了HostFileChangeMonitor,但看起来有各种其他“更改监视器”,如SqlChangeMonitor,或者您可以创建自己的继承自ChangeMonitor。

如果无法使用更改监视器,则可以将CacheItemPolicy设置为在间隔或一次之后无效。有可能甚至将结果缓存几秒钟可能会显着减少服务器在大量请求数据时必须完成的工作。