这是我的问题。我正在开发一个网站,允许用户预订世界各地的酒店,就像 booking.com、expedia.com 等。
当用户搜索某个城市的酒店时,我通过网络服务连接不同的供应商,然后显示结果。在几乎每个提供商中,这意味着:
1) 在 WS 中调用一个方法,该方法返回城市中所选日期的可用酒店。对于这些酒店中的每一个:
- 2) 从一个非常大的 XML 文件(通常超过 1 个)中读取以获得地址、电话、传真、描述、服务等静态信息。
- 3) 调用WS中的第二个方法获取可用房间信息。
- 4) 显示结果
我遇到的问题与页面加载时间有关,这是这些网站的关键因素。
第一次调用 WS(点 1),这是必要的事情,我无能为力,所以我不得不接受这次。另外两点也是必要的,但我的目的是通过加载时显示酒店来改善用户体验。
假设您正在寻找布宜诺斯艾利斯的酒店。您输入“布宜诺斯艾利斯”作为目的地,然后点击“Buscar”按钮。您可能会注意到,在下一页完全加载之前,会显示一条加载消息。而不是等待所有酒店加载,我想做的,我认为会改善用户体验的是:
- 当用户点击“Buscar”按钮时,立即将用户转到 HotelList 页面
- 显示每家酒店的信息,并在顶部显示一条消息,如“正在加载 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/