从AutoCompleteExtender停止对DB的多次调用

时间:2012-10-02 16:00:41

标签: c# asp.net ajax caching autocompleteextender

我似乎无法为此找到很多帮助。当用户向搜索文本框添加击键时,我在.net中使用自动填充扩展程序来建议搜索框的选项。虽然每按一次键就会发送一次对DB的新调用,但这样可以正常工作。

在网站用户数量开始增加之前,这很好!所以我使用了datatable.select缓存,而不是每次往返DB。

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

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

有没有关于最佳方法的指针?

谢谢, 本

2 个答案:

答案 0 :(得分:1)

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

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

看看这对性能是否有帮助。

答案 1 :(得分:1)

根据数据的静态性,您可以在application_start或类似的地方填充缓存。 (像@pinoy_ISF建议的那样)。

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