Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GWT生成的HTML文件太大_Google App Engine_Gwt_Caching_Compression_Gzip - Fatal编程技术网

Google app engine GWT生成的HTML文件太大

Google app engine GWT生成的HTML文件太大,google-app-engine,gwt,caching,compression,gzip,Google App Engine,Gwt,Caching,Compression,Gzip,我有一个巨大的GWT应用程序,编译后,它会生成一个XXX.chace.html文件。这个文件非常大,大约3MB,需要用户花费30秒来加载网页。除了使用代码拆分外,是否还有其他方法来减少此文件?我尝试在GZip中使用compress命令,但显然存在一个bug,即大于1.5MB的文件不会被压缩 以前有人遇到过这个问题吗?您是如何解决这个问题的?使用将帮助您将代码分块 不幸的是,你需要看看你的应用程序是如何利用它的,但如果你的应用程序如此庞大,你肯定会从中受益。如果你不想使用代码拆分,你的另一个选择是

我有一个巨大的GWT应用程序,编译后,它会生成一个XXX.chace.html文件。这个文件非常大,大约3MB,需要用户花费30秒来加载网页。除了使用代码拆分外,是否还有其他方法来减少此文件?我尝试在GZip中使用compress命令,但显然存在一个bug,即大于1.5MB的文件不会被压缩

以前有人遇到过这个问题吗?您是如何解决这个问题的?

使用将帮助您将代码分块


不幸的是,你需要看看你的应用程序是如何利用它的,但如果你的应用程序如此庞大,你肯定会从中受益。

如果你不想使用代码拆分,你的另一个选择是减少代码的大小。这里有几点建议

1) 你是否在应用程序中使用了大量文本,比如每页上有几个段落?您可以考虑使用外部文本资源,而不是在JavaScript中嵌入文本。

2) 列出你在应用程序中使用的所有小部件。看看你是否真的需要所有这些。例如,如果使用多种类型的LayoutPanel,则可能决定只使用LayoutPanel。如果您使用VerticalPanel和/或HorizontalPanel,您可以将它们全部去掉,改用CSS。我从许多GWT帖子中注意到,人们喜欢使用很多小部件(面板内面板内面板等),而简单的CSS就可以了

请注意,当您完全摆脱一个小部件(最好是整个小部件类别)而不是减少一个视图中的小部件数量时,您将获得大部分好处

3) 尽可能多地使用Ui:Binder。请注意,您可以在Ui:Binder中设置许多属性:类名、大小、文本小部件的文本、工具提示。我相信在代码中这样做更有效(我没有验证它,但无论如何这是一个很好的实践)

4) 检查是否有效地使用事件处理程序。如果一行中有10个按钮/标签,则可能不必为每个按钮/标签附加事件处理程序,而是为其容器附加一个处理程序。如果单击一行中的每个单元格做相同的事情(如打开对话框),则不必在每个单元格中都包含此代码-您可以捕获对一行的单击。等等


这里是一个数据点:我有一个应用程序,它有50多个复杂的“页面”(不同的位置/视图)、30多个数据实体、60多个自定义小部件和1000多个文本常量。它编译为1.2MB。(我使用GWT RPC)。我只能想象使用3MB可以做什么。

确保gwt只是编译它需要的代码。使用接口/抽象类型可以增加您的大小


例如,如果您在RPC调用中返回一个映射,那么gwt将需要包含所有可用的映射子类型。返回一个像HashMap这样的具体类将阻止这种情况。这是因为gwt代码被编译成Javascript,所以它会编译它认为可能需要的所有代码

使用a来找出导致代码大的确切原因。然后尝试删除最大的类或字符串。

这可能是另一个方向的方法,但Google App Engine提供了一个可用于加快用户加载应用所需时间的方法


不过,它不是免费的,在常规GAE带宽成本的基础上,每GB带宽传输0.39美元,但在该服务下不会进行优化。

样式编译器选项是否设置为模糊(或未设置)之外的其他选项?如果您正在生成漂亮或详细的javascript,那么可能会导致文件大小大幅增加如何从构建脚本中进行gzip?还是在运行时由web服务器执行?代码拆分有什么问题?如果设置正确,您的web服务器可能已经压缩了此文件。压缩两次不会有多大帮助。你可能还想用Firefox的y-slow插件之类的东西来分析你的页面。