停止从自动完成扩展器对数据库的多次调用



我似乎找不到太多帮助。 我正在使用 .net 中的自动完成扩展器在用户向搜索文本框添加击键时建议搜索框的选项。 这工作正常,尽管每次按下某个键时都会发送对数据库的新调用。

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

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

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

有没有关于解决这个问题的最佳方法的指示?

谢谢本

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

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

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

<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" />

看看这是否有助于性能。

最新更新