使用多个酒店,航班和其他产品的帮助搜索旅行网站包装产品的高性能UI方法



我有一个带有包装产品的ASP.NET MVC 5和EF5内置的旅行网站。每个包装产品都有为包装的每一天定义的多套酒店和航班。

目前,当用户通过我的应用程序搜索特定的包装价格时,我会致电多家酒店和飞行供应商的网络服务,以获取价格并在从供应商那里获得所有费率后计算总包装。

问题:在包装销售率期间,我的网站性能太慢了,因为我等待每次航班和每个酒店的包装中添加的所有产品的价格,然后使用详细信息更新UI。

我认为可能是使用SignalR来获取酒店/飞行的费率,并使用Angular更新UI首先显示返回最快的响应。一次,我得到所有价格,然后将计算总包装。

在这种情况下,需要帮助遵循的方法才能获得高性能(少于25秒(。

谢谢,

Vivek

探讨大多数依靠外部服务来回复的大多数此类服务使用的方法,然后按价格或可用性或评级显示最好的方法:

  1. 请使用用户搜索参数,在您的服务器或客户端上,您可能需要格式化它们以使其为外部提供商做好准备。
  2. SignalR Hub可用于将上述参数发送到服务器,现在HUB将等待服务器回复,并说"运行一个简单的调用(addToresults("函数。
  3. 在服务器上,您将使用现有的获取结果的方法,并且可能会有运行到其他服务的并行调用。呼叫返回结果后,您可以简单地调用HUB上的功能,并将结果传递给它。您可能需要将结果格式化为标准格式。
  4. 在客户端,集线器将知道需要触发addToresults功能,并且将为UI添加所获得的结果。您可以使用Angular或jQuery或任何内容来填充UI,或对它们进行排序等。
  5. 在此期间,如果您愿意,您也可以在HUB上具有不同的功能来更新UI,例如,您使用了多少个服务,已完成了多少服务以及应该等待多少用户。

理想情况下,等待的时间应该减少到您发送并从服务器中获得的大部分时间和一些额外的元素的服务,但是这将是对您现在正在做的事情的一个改进。

如果没有SignalR,您就可以做一些已经知道X服务量需要查询的事情,并且您可以简单地对服务器上的不同功能进行AJAX调用,这将为您提供每种服务的结果。当您获得任何服务的结果时,只需将其附加到结果并继续。这也将减少时间并在第一个Ajax呼叫返回后立即开始显示结果,还可以跟踪剩余多少等。

大部分时间速度都将仅限于外部服务响应时间只是最长通话所花费的等待,而不是所有呼叫的等待。

最新更新