【问题标题】:How to get AppEngine data to GWT client, only once如何将 AppEngine 数据获取到 GWT 客户端,仅一次
【发布时间】:2012-09-30 23:40:12
【问题描述】:

我的 AppEngine 支持的应用中有一个 6MB 的二进制文件。我需要将此文件发送给我的 GWT 客户端以进行许多计算。我试图避免在服务器上进行计算以节省我的实例小时配额。但这意味着我必须以某种方式将文件发送给我的客户。

我也不想每次打开应用程序时都将其下载到应用程序中,这会损害我的 appengine 传出带宽配额。

最好下载一次,然后让客户端以某种方式存储它以供下次打开应用时使用。

如何最好地做到这一点?

客户端捆绑包?使用 HTML5 存储?这种事情是不是还没做完,我应该在服务器上做计算,然后将结果发送给客户端吗?

【问题讨论】:

  • 为什么每次访问应用程序时都需要进行相同的计算?你不能一次做这些计算,只把结果存储在客户端吗?
  • 好问题,我应该更清楚。计算由两部分组成:一些当前条件和来自用户的输入,它们会一直变化;还有这个 6MB 的二进制数据,永远不会改变。

标签: html google-app-engine gwt


【解决方案1】:

永久缓存文件的最简单方法是使用application cache

另一种方式是 HTML5 存储 (localStorage),但有 2.5 MB 的限制。要使用超过这个数量,您可以使用 IndexedDB(Chrome、Firefox、IE10)和 WebSQL(Safari、Opera)。在这种情况下,像 YDN-DB 这样的包装库会有所帮助。

【讨论】:

    【解决方案2】:

    你可以使用DataResource:

    https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle#DataResource

    您面临的唯一问题是文件大小。不同的浏览器有不同的限制——我见过 5MB 和 8MB 的数字。如果您可以将文件压缩到 5MB 以下,那么大多数浏览器都应该没问题。 (顺便说一句,如果不能进一步压缩,这将是一个巨大的数据量。)

    此外,您可以检测移动浏览器(或为移动版本提供不同的 URL),并在服务器上为移动用户进行计算。

    【讨论】:

    • 谢谢安德烈。您能否提供一些关于如何使用 GWT 在我的客户端中获取底层二进制数据的伪代码?另外,您能否评论一下客户端是否足够聪明,知道它只需要下载一次数据,从您发布的链接中不清楚是这种情况。
    • 您需要告诉 Appengine 在您的数据文件上设置正确的标题。很简单:developers.google.com/appengine/docs/java/config/…
    • 谢谢安德烈。要接受您的回答,我想我需要查看一行代码,显示如何使用 DataResource 获取二进制数据。如何将它放入一些 byte[] 或类似的东西中?
    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2017-10-08
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多