0

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

这很好,直到网站用户数量开始变高!因此,我将缓存与 datatable.select 一起使用,而不是每次都往返于数据库。

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

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

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

谢谢,本

4

2 回答 2

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

看看这是否有助于性能。

于 2012-10-02T20:23:53.760 回答
1

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

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

于 2012-10-03T11:37:32.467 回答