高延迟/低带宽环境中的浏览器应用程序

时间:2008-11-01 22:44:46

标签: .net ajax

我们有一个典型的业务应用程序,看起来像Outlook的Winforms客户端与asmx webservices交谈。我们希望通过内部网提供部分功能,但我们需要达到的新用户 - 所有这些用户 - 都在发展中国家,具有拨号类型带宽和大量延迟。他们都使用IE 6。

因此,我们需要将往返次数以及传输的数据量保持在绝对最小值。我们正在考虑一个具有单个URL的站点,通过AJAX调用与我们现有的后端进行所有交互。基本上是一个胖客户端,它保持很多状态,并且只偶尔发出一个http请求来修改或获取数据。为每个用户点击发出二十二个请求的典型Web应用程序对我们不起作用。

这种方法听起来合情合理吗?如果你遇到这种问题,你会推荐哪些javascript框架或库?我们使用TIBCO GI进行原型设计,但XML操作很痛苦,我们无法在浏览器中获得所需的性能。接下来我们可以看看YUI,可能有我们现有的asmx服务JSON。

感谢任何建议。

3 个答案:

答案 0 :(得分:2)

我能想到的几件事

往返

就像你的说法一样,越少越好,为了最好地适应浏览器客户端,最好通过浏览器应用程序的用例设计界面,返回界面的现成数据而不用其他高架。它与您目前为桌面应用程序提供的内容略有不同,因为状态并不像胖客户端那么容易。

<强>运输

在Web服务器上启用压缩。

<强> API

尽可能利用REST api,因为一些静态数据可以被broswer缓存,并且大小小于将序列化形式的请求放入正文中

<强>编码

对于浏览器应用程序,JSON比XML要好得多,而且大小也小于XML。

<强>框架

您还可以查看JQuery或原型 最近的GWT也非常适合用AJAX构建weblication,它将java代码转换为具有国际化功能的javascript等。它还使调试变得更加容易。

对于Web服务,值得再看一下WCF RESTful服务,您应该能够在将框架移动到WCF的同时利用现有的业务逻辑。

答案 1 :(得分:1)

正如CodeMelt所说,这将是减少往返旅行的全部内容。这里有几种方法:

确保首页加载的内容尽可能多。在第一次构建应用程序时,页面会立即通过Ajax调用从服务器请求更多状态。可能是通过在页面上包含信息来避免您对服务器的第一次请求。

如果您有很多图片,请使用css sprites来减少往返行程以获取图片。

进行非标准化。构建应用程序的逻辑方法可能是进行一些不同的Ajax调用以从服务器获取不同的状态。将它们组合起来以返回更大的JSON结构。

使用YSlow和Firebug查看您的网页实际上在做什么。

答案 2 :(得分:1)

以下是一些想法:

  • 如果MSIE支持它,请使用某种方法将静态(不变)文件放入单个存档文件中 - Mozilla支持使用.jar文件来实现此目的。
  • 如果您无法将所有资源放入.jar或类似资源中,请使用Javascript预加载它们。如果有帮助的话。
  • 确保静态文件具有适当的Last-modified:和Expires:标头,用于客户端缓存。确保“no-cache”标题等不会出现在静态资源上。
  • 如果您正在使用XHR请求获取GET方法的信息(这是一个好主意),请确保THOSE请求具有适当的Last-modified:和Expires:headers - AJAX请求也可以从客户端缓存提供
  • 如果您特别使用HTTPS,请启用HTTP Keepalive并使用长超时 - 这将占用服务器上的更多资源,但客户端上建立连接和进行HTTPS握手的次数较少
  • 除非您需要,否则请勿使用HTTPS。