我必须将数据加载到一些下拉列表中,其中包括通过oracle存储过程将数据加载到数据表中。但这会使我的页面在每次回发后加载速度变慢。我应该使用哪种技术来加快页面加载速度。
为了更好地理解,我将引用此处的实例
现在我的问题是如何通过使用一些调优技术或实现一些新的技术来加快页面加载速度。我的问题是针对asp.net 2.0框架的。
提前致谢。
答案 0 :(得分:0)
在没有看到你的代码并考虑到你对回发加载时间的关注(“......每次回发后慢......”),我可以建议你也许可以利用ASP.NET ViewState功能填充你的drop -down在初始页面加载期间仅列出一次,并让ASP.NET在后续回发期间恢复其状态(项目以及所选值)。像下面这样的伪代码可以做到这一点:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadData();
}
}
private void LoadData()
{
// this.List1 refers to the DropDownList control defined in your page markup
DropDownList list = this.List1;
IList<Tuple<string, string>> items = /* Getting items from the database */;
int selectedItemIndex = /* Getting the selected item index */;
for (int i = 0; i < items.Count; i++)
{
list.Items.Add(new ListItem(items[i].Item1, items[i].Item2, i == selectedItemIndex));
}
}
希望这有帮助。
P.S。当你提出这类问题时,请确保你发布相关的代码片段,因为否则很难提出建议,因为问题可能不是它看起来的样子: - )
答案 1 :(得分:0)
我建议您缓存填充下拉列表的数据。有很多技术,这取决于你下载的数据量。
正如我所期望你有一个包含大量列的表(如表用户 - id,name,telephone,birthdate,reletaion1,reletaion2,relation3 ......)但是你需要从这个表中只有2个列 - Id,名称。所以:
1)我建议你使用SelectListItem作为Dto对象。 2)在应用程序开始时,将bd中的所有整个数据作为List项加载到内存缓存中,但如果你的对象不超过10000个(取决于你的服务器内存量),这将正常工作。 3)享受快速工作的缓存数据。
另一种方法是将此对象存储在NoSql中,例如Name-value collection,它用于存储此类数据,它比使用Sql处理这种数据的速度更快。