.NET页面缓存但仍然接收查询字符串

时间:2011-12-05 19:55:47

标签: asp.net caching webforms iis-7.5

是否可以在iis Web服务器上缓存页面呈现,但仍然可以接收和写入数据库的查询字符串值(不影响输出)?这样页面呈现不必等待数据库行程执行才能提供页面服务?如果可能,我该如何实施?

例如,我们通过查询字符串跟踪各种联盟和搜索营销数据,并在后面的母版页代码中,将给定的查询字符串数据写入数据库。页面的输出对用户来说根本不会改变(但是我们可以根据qs参数设置cookie)。

我的理解是页面呈现必须等待数据库行程完全执行才能呈现页面。这是真的吗?

1 个答案:

答案 0 :(得分:1)

一般情况下是的,但它可能取决于人们如何处理缓存。

首先,你应该将跟踪内容移动到它所属的位置 - 一个HttpModule。页面不需要关注自己。其次,你可能想要研究的是某种火灾,忘记服务电话或消息排队。这使得数据库编写非阻塞操作而不是阻塞操作。

使操作无阻塞的一些选项:

  • 如果您实际上是在写一个Web服务,那么就会有一个被低估的[OperationContract(IsOneWay = true)]装饰。告诉生成的代理触发并忘记呼叫,不会等待响应。
  • 另一种选择是使用异步ADO.NET位,尤其是BeginExecuteNonQuery。如果你不处理回调,那就应该执行你的线程。
  • 你总是可以生成一个线程并自己以非阻塞的方式处理它。只需要真正小心处理此线程上的错误 - 未处理的异常将取消应用程序域。