我正确使用缓存吗?

时间:2010-07-02 12:11:59

标签: asp.net caching asp.net-2.0

我有一个页面,我从数据库中提取数据集,数千条记录。我在页面加载时得到它并将其存储在缓存中。每次在页面上执行操作时,我都会检查缓存以查看它是否仍然存在,如果没有,请再次获取(20分钟到期);相当典型的设置。

当我运行页面时,初始数据加载正常,并且默认的RowFilter应用于数据。当我更改下拉列表的值(更改RowFilter)时,页面会挂起一会儿,然后返回一个javascript错误:

  

线:80772370(是的,那是80万行...)
  Char:17
  错误:语法错误
  代码:0
  网址: - 我正在访问的网页的网址 -

此错误重复完全 20次。

当我重新运行页面以及呈现该错误的操作时,我得到一个不同的行号(例如,下次我发布上述消息后运行它,该行是80718666),正好是20再一次。

现在有几个曲线球:

  1. 当我使用Session来存储数据而不是缓存时,我遇到了完全相同的问题。
  2. 我在开发环境中没有这个问题(这在QA中发生)。每个环境的web.config几乎相同,但它们之间的主要区别在于QA使用与自身分离的sessionState服务器。这就是我首先从Session变量转移到缓存的原因。
  3. 如果搜索条件不打算返回任何结果,它将按预期执行(不显示任何结果)。
  4. 现在这并不是我最好的一周,所以也许我错过了一些大事,但我可以使用一些指导。

    感谢SO社区。

1 个答案:

答案 0 :(得分:1)

如果您使用UpdatePanel,删除它以查看真正的错误是什么,因为现在错误隐藏在javascript返回字符串上,位于您提到的位置。

找到错误后,再次调出UpdatePanel。

我可以假设错误是一个已被缓存的空对象/控件,而您忘记检查它是否为空。

当您在页面和控件上缓存部件时,如果它们在使用之前为null,则需要在后面的代码上进行检查。