【问题标题】:Increase performance startup hybrid app提高性能启动混合应用程序
【发布时间】:2013-01-21 06:55:48
【问题描述】:

我在启动混合应用程序时遇到问题。加载第一页需要很长时间。约 40 秒。

我使用 GWTGoogle App EngineRequestFactories。我检测到,该应用程序向服务器发出了多个请求(约 10 个请求)。

现在我想知道,如何提高启动应用程序的性能。

  1. 将所有请求组合成一个请求,通过一个请求传递所有数据。 (~300kb 数据)
  2. 制作一个请求和数据量较少的启动页面。 (约 50kb 数据)
  3. 更好的主意?

我更喜欢,我可以保留当前的启动页面。可以分享一下你的经验吗?

【问题讨论】:

  • 您是否对您的应用进行了概要分析?由于您使用的是 App Engine,因此您可能会面临新实例的冷启动时间,这与您的请求和数据传输无关。
  • 是的,这不是问题。无论如何感谢您的建议。
  • 您可以在 App Engine 日志中查看每个请求需要多长时间。然后,您可以立即看到问题所在。即使对于 10 个请求和 300kB 的数据,40 秒也太长了。
  • 我同意,但 40 秒仅适用于我从 iphone 或 android 启动时。当我从浏览器启动时,大约需要 10 秒。

标签: android ios performance gwt web-applications


【解决方案1】:

您已经指出了减少启动时间的两种主要方法。

1.- 减少请求:使用 RF,如果您共享同一个服务实例并且只调用一次 .fire() 方法,您可以将所有请求归为一个。对图像、css 和其他资源使用 Bundle,以便在同一个请求中下载它们。

2.- 减小 js 大小:使用 GWT.runAsync() 将代码分成几部分。因此,在用户与之交互之前,第一段代码可能是启动应用程序的最少内容。您可以使用 gwt 编译报告来查看您的代码是否更大。您可以使用gwt-2.5中新的闭包编译器来减少和优化最终的js。

3.- 您必须检查的另一件事是您的网络服务器配置正在发送适当的标头,以便浏览器缓存 gwt 片段,并且您应该在发送到客户端之前检查它是否正在压缩文件。你可以让 gwt 编译器预压缩这些 js 片段。

4.- 对于连续加载,我的意思是用户第二次访问您的应用程序,请考虑使用本地存储来缓存某些不会更改的内容,而不是再次请求它们。配置您的 HTML5Manifest,如果您使用的是 mgwt,这真的很容易,因为它们包含一个链接器来在编译时生成清单。

5.- 考虑使用轻量级小部件和框架,而不是重型小部件(js 集合、元素、gquery、mgwt 等)。

【讨论】:

    【解决方案2】:

    我有几个建议:

    • 加载启动时在单个请求中很少更改的数据。
    • 在您的服务器上激活 GZip 压缩。
    • 在用户空闲时间完成应用程序启动时使用后台调用。
    • 在单个请求中对相关请求进行分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多