我应该多长时间缓存一个可以随时更改的对象?

时间:2011-06-23 15:48:16

标签: asp.net xml performance caching

我正在制作一个相当复杂的应用程序。它有望在多个Web服务器上运行,否则这很容易。

基本上,我们有一组客户记录。每个客户端记录都有一个XML列,其中包含所有“真实”数据,例如客户端名称和动态生成的其他字段。我们的用户可以随时更新客户的记录。此外,我们有应用程序记录。每个应用程序都绑定到多个客户端。每个应用程序通常与3个以上的客户端相关联。每个客户端的XML数据通常都大于5k的文本。

在我做过的一些分析中,获取和反序列化这些XML数据是一项相当昂贵的操作。在我们的Web应用程序的一部分,我们必须具有非常低的延迟(related)。因此,在此部分中,我们的Web应用程序是JSON Web服务。当向它发出请求时,通常会需要每个客户端记录(完整的,由于它当前的编码方式)。我试图在这部分中尽可能少地使用数据库命中。

我应该缓存客户端记录的XML对象多长时间?知道用户可以随时更改它,我不确定是否应该缓存它,但用户是否可以使用稍微陈旧的数据?

3 个答案:

答案 0 :(得分:2)

不要在任何类型的计划表上刷新缓存,只需将任何关键记录的最后修改日期与访问时的缓存值进行比较,这应该是一个非常便宜的操作。然后仅在需要时更新缓存。

答案 1 :(得分:1)

您可以在客户端验证其缓存的XML的数据库中存储xml的哈希值。

然后,如果它不匹配,则使缓存无效并检索新的。

更新XML后,使用它更新哈希,然后客户端会注意到并更新其缓存。

答案 2 :(得分:1)

也许您应该使用SqlCacheDependency来确保从缓存中删除数据,并在数据库发生更改时从数据库重新加载。