【问题标题】:How long should I cache an object which can be changed at any time?我应该将可以随时更改的对象缓存多长时间?
【发布时间】:2011-06-23 15:48:16
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net xml performance caching


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      当 XML 更新时,用它更新哈希,然后您的客户端会注意到并更新他们的缓存。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-08
          • 1970-01-01
          • 2010-12-31
          • 1970-01-01
          • 2016-07-17
          • 1970-01-01
          • 1970-01-01
          • 2013-01-02
          相关资源
          最近更新 更多