【问题标题】:Stop Multiple Calls to DB from AutoCompleteExtender停止从 AutoCompleteExtender 对 DB 的多次调用
【发布时间】:2012-10-02 16:00:40
【问题描述】:

我似乎在这方面找不到太多帮助。当用户将击键添加到搜索文本框时,我正在使用 .net 中的自动完成扩展器来建议搜索框的选项。这很好用,尽管每次按下一个键都会发送一个新的 DB 调用。

在网站用户数量开始增加之前,这很好!所以我将缓存与 datatable.select 一起使用,而不是每次都往返于数据库。

如果缓存不存在,则创建它,然后每次使用缓存。

但是,现在的问题是,在第一个访问者创建缓存时到达的所有用户都假设没有缓存并开始尝试创建自己的同名缓存,从而再次使数据库超载!

是否有任何关于解决此问题的最佳方法的指示?

谢谢, 本

【问题讨论】:

  • 如果在 Application_Start (Global.asax) 期间缓存数据怎么办?
  • 如果您按照@pinoy_ISF 的建议缓存参考数据,然后从服务器缓存中提取 Web 服务。

标签: c# asp.net ajax caching autocompleteextender


【解决方案1】:

根据您的数据的静态程度,您可以在 application_start 或类似的地方启动缓存。 (就像@pinoy_ISF 建议的那样)。

您还可以设置应用程序级别的标志,指示您当前是否正在构建缓存,如果是,则直接转到数据库而不更新缓存。完成缓存构建后,恢复标志,后续请求应该会正常命中缓存。

【讨论】:

    【解决方案2】:

    将您的数据库连接字符串设置为池。像这样:

    <add name="YourConnectionString" connectionString="data source=ServerAddress;UID=UserID;PWD=Password;DATABASE=YourDataBase;Min pool size=5;Max pool size=20;connection timeout=15;pooling=yes" />
    

    看看这是否有助于提高性能。

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 2018-09-15
      • 2022-01-20
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      相关资源
      最近更新 更多