c# - Ajax.net - 改善页面加载时间

标签 c# asp.net ajax load-time

这是我的问题。我正在开发一个网站,允许用户预订世界各地的酒店,就像 booking.com、expedia.com 等。

当用户搜索某个城市的酒店时,我通过网络服务连接不同的供应商,然后显示结果。在几乎每个提供商中,这意味着:

1) 在 WS 中调用一个方法,该方法返回城市中所选日期的可用酒店。对于这些酒店中的每一个:

  • 2) 从一个非常大的 XML 文件(通常超过 1 个)中读取以获得地址、电话、传真、描述、服务等静态信息。
  • 3) 调用WS中的第二个方法获取可用房间信息。
  • 4) 显示结果

我遇到的问题与页面加载时间有关,这是这些网站的关键因素。

第一次调用 WS(点 1),这是必要的事情,我无能为力,所以我不得不接受这次。另外两点也是必要的,但我的目的是通过加载时显示酒店来改善用户体验。

假设您正在寻找布宜诺斯艾利斯的酒店。您输入“布宜诺斯艾利斯”作为目的地,然后点击“Buscar”按钮。您可能会注意到,在下一页完全加载之前,会显示一条加载消息。而不是等待所有酒店加载,我想做的,我认为会改善用户体验的是:

  1. 当用户点击“Buscar”按钮时,立即将用户转到 HotelList 页面
  2. 显示每家酒店的信息,并在顶部显示一条消息,如“正在加载 XXX 酒店中的 1 家”...“正在加载 XXX 酒店中的 2 家”...

我一直在寻找描述如何实现这一点的 ajax 示例,但没有找到任何明确的文章。我真的很感激有人能指出我正确的方向。

谢谢!

-------------------------------------------- ------------------------------

尝试使用多线程,但未显示结果。 我正在使用文字控件显示结果。这是一段代码:

酒店列表.aspx

<asp:Literal ID="HotelesResultadoBusqueda" runat="server"></asp:Literal>

HotelList.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    ...
    ...
    ThreadStart job = new ThreadStart(CargarHoteles);
    Thread thread = new Thread(job);
    thread.Start();
}

private void CargarHoteles()
{
    // Load Hotels
    ArrayList hotels = WebService......
    foreach(Hotel hotel in hotels)
    {.....}
    ....
    this.HotelesResultadoBusqueda.Text = "...";
}

最佳答案

关于“当它们到达时”,最简单的事情是在后端构建一个(线程安全的)待处理项目队列,即新结果进入队列 - 每隔几秒让您的 JSON 查询轮询队列中的新数据(针对该 session )。

重新表现;只需对其进行概要分析并攻击概要文件显示的正在受到伤害的位。将 XML 预加载到某个索引结构(甚至可能是数据库)中是我的主要猜测......

关于c# - Ajax.net - 改善页面加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843841/

相关文章:

c# - 获取MySQL多行数据并显示在单独的文本框中

c# - 不同类的大量命令行参数

c# - 如何访问 RIR(区域互联网注册机构)数据库?

asp.net - 确定.NET是否将我发送到自定义错误页面?

javascript - 如何为 php 文件制作通用的 ajax 函数

c# - 你如何在 WPF 的 Canvas 上画一条 1 像素粗的线

c# - 如何使空网格单元格在 Asp.net 网格中可点击?

iphone - iPhone 上的 Chrome 模拟器?

javascript - fullcalendar.io 使用 PHP/MySQL 渲染事件?

php - 使用 PHP 将数组传递给 Ajax