我必须将数据加载到一些下拉列表中,其中包括通过 oracle 存储过程将数据加载到数据表中。但这会使我的页面在每次回发后加载缓慢。我应该使用哪种技术来加快页面加载速度。
为了更好地理解,我将在此处引用实例
- 我们将使用 oracle 连接和存储过程加载数据表。
- 我们将此数据表内容加载到下拉列表中
- 在选择这个下拉列表时,将使用上述过程填充另一个下拉列表。
现在我的问题是如何通过使用一些调整技术或实施一些新技术来使我的页面加载更快。我的问题是特定于 asp.net 2.0 框架的。
提前致谢。
我必须将数据加载到一些下拉列表中,其中包括通过 oracle 存储过程将数据加载到数据表中。但这会使我的页面在每次回发后加载缓慢。我应该使用哪种技术来加快页面加载速度。
为了更好地理解,我将在此处引用实例
现在我的问题是如何通过使用一些调整技术或实施一些新技术来使我的页面加载更快。我的问题是特定于 asp.net 2.0 框架的。
提前致谢。
在没有看到您的代码并考虑到您对回发加载时间的担忧(“......每次回发后缓慢。”)的情况下,我可以建议您也许可以利用ASP.NET ViewState功能来填充您的下拉列表在初始页面加载期间一次,并让 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));
}
}
希望这可以帮助。
PS 当您提出此类问题时,请确保发布相关的代码片段,否则很难提出建议,因为问题可能不是看起来的那样:-)
我建议您缓存填充下拉列表的数据。有很多技术,这完全取决于您将多少数据加载到下拉列表中。
正如我所期望的那样,您的表格包含大量列(例如表格用户 - id、姓名、电话、生日、reltaion1、reletaion2、relation3 ...),但您只需要从这张表中获取 2 个列 - ID、名称。所以:
1)我建议您使用 SelectListItem 作为 Dto 对象。2)在应用程序开始时,将 bd 中的所有数据作为列表项加载到内存缓存中,但如果您的对象不超过 10000 个(取决于服务器的内存量),这将正常工作。3) 享受快速工作的缓存数据的乐趣。
另一种方法是将此对象存储在 NoSql 中,例如 Name-value 集合,它是为存储此类数据而设计的,它也比使用 Sql 存储此类数据更快。