ASP.NET Data Cache - preserve contents after app domain restart

ぐ巨炮叔叔 提交于 2019-11-30 22:45:53

Is there any way to configure cache so its contents are preserved when the App Domain recycles?

No. The Cache object holds references in RAM. Period.

Alternatives:

  1. Out-of-process Session state (although that's per-user)
  2. Distributed cache
  3. Use SQL Server as a cache (where it keeps data in memory, rather than on disk)
  4. Write the objects to disk at the web tier

I generally prefer #3 myself, although there are scenarios where the others are appropriate.

Recycling the appdomain dumps the cache. If you want to get around this you'd need to use a distributed cache. Here's an example.

For your most expensive data you can cache the objects with a distributed cache such as Memcached or velocity. Depending on the size of the object and the length of runtime you could also serialize it to disk or to your database provided that the access speed to these resources is less than the time to create the object.

Now since the in-proc cache is super fast compared to any other solution since it just holds a reference to the memory object you will want to use it where possible. You can keep a copy of your cached object on disk until it is lost and then re-create it from that and place it in memory. Where this is tricky is when you have to expire the data so only use the cache/disk/sql combo where you won't need to expire/invalidate the data otherwise you will need to ensure that you clear both. This will also get around not being able to implement distributed caching on a shared server for example.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!