Java Appengine上载限制为10000个文件

Java Appengine上载限制为10000个文件,java,google-app-engine,gwt,Java,Google App Engine,Gwt,尝试将我的应用程序部署到appengine失败,原因是上载的硬限制,即10000次 我的应用程序正在使用其他两种语言的外部库和常量。请参阅以下快照: 异步块已放置在项目中必要的位置 使用以下编译时选项: -本地工人3-XfragmentCount 10 但问题是,当我将项目上传到appengine时,会出现以下异常: ** java.io.IOException:应用程序限制为10000个文件,您必须 34731 ** 我知道我可以通过降低跨浏览器兼容性或减少区域设置来减少文件数量。但在部署时

尝试将我的应用程序部署到appengine失败,原因是上载的硬限制,即10000次

我的应用程序正在使用其他两种语言的外部库和常量。请参阅以下快照:

异步块已放置在项目中必要的位置

使用以下编译时选项: -本地工人3-XfragmentCount 10

但问题是,当我将项目上传到appengine时,会出现以下异常:

**

java.io.IOException:应用程序限制为10000个文件,您必须 34731

**

我知道我可以通过降低跨浏览器兼容性或减少区域设置来减少文件数量。但在部署时,这并不是一种实用的方法

所以请给我一些建议


我想提及的另一件事是,该项目在其大多数屏幕中广泛使用VerticalPanel/HorizontalPanel/FlexTable/DialogBox。我不确定这是否与这个问题有关。

我担心这也会发生在我身上,我在项目进行过程中遇到了这个问题,所以我将浏览器限制为chrome和ff。但当我必须真正部署时,这可能是一个问题

每个版本的应用程序最多可上载10000个文件。每个文件的最大大小限制为32 MB。此外,如果所有版本的所有文件的总大小超过最初的免费1GB,则每月将收取每GB 0.13美元的费用。


解决方案可能是将每种语言部署为一个应用程序,如果您的数据在不同语言之间不相关

听起来您可能也在应用程序中部署了所有gwt类

当我是一个appengine的重度用户时,我肯定会JAR我上传的所有类(不包括任何非共享的gwt代码)。您可能需要$
查找-n“*.class”| wc-l
计算您发送的类数

预先对类进行jar处理将使15000个类文件=1个jar文件


制作巨大的罐子太糟糕了,因为每次更改都需要重新部署整个罐子。最好有很多小罐子

我所做的是将所有GWT生成的文件放在一个ZIP中,并使用servlet为它们提供服务


为了优化一些东西,我在解压缩后将每个文件都放在memcache中。

Hm,部署多个应用程序可能不合适。就大小而言,我远远低于1GB的阈值。但是文件的数量是个问题,更重要的是在deferredJs文件夹中。我想知道是否有一些技巧可以在不失去跨浏览器兼容性或区域设置的情况下控制这一点。我开始查看部署的文件夹,看看文件在哪里。我似乎没有10000个文件:-((你认为jar被解压了吗?)当你转到war文件夹时(编译完GWT应用程序后)有34K个文件吗?实际上没有,那里大约有16.5K个文件。但是当你试图用appcfg上传你的应用程序时,会在上传之前创建一个临时文件夹。其中的文件数大约是34K。应该考虑这个文件数。正如John在Google+中问的那样,你有多少个分割点?有多少个排列?如果您有100个分割点和100个排列,这将导致超过10000个js/html文件(加上各种图像,但这些图像不太可能被重复这么多次)。我的最后一个问题部分由模块文件回答-5个浏览器和3个(或4个,包括默认值)区域设置,但这不包括我们看不到屏幕截图的您自己的其他模块。如果我理解正确,我有5个浏览器配置和三种不同的语言(包括英语)。我尝试保留一个浏览器,但没有自定义区域设置,这需要20个排列。因此,我总共需要100个没有自定义区域设置的排列。但是,如果有两个附加的区域设置,这将上升到300。这意味着要将文件计数保持在10K以下,我不应该有超过30-32个分割点。在这里,我将计算每个GWT.Async块的数目,如下所示e、 这个假设正确吗?我知道你不能列出所有的文件,但你能对它们进行一些快速分析吗?有多少.cache.html文件(排列),多少.cache.js文件,最大的N是多少(即有多少个分割点)。20个排列+(20个排列*30个分割点=600)仍然不到您看到的数量的10%——我猜关于太多类文件的答案可能是真正的问题……谢谢Colin。但是在我的例子中生成的类也使用软排列进行检查。这些允许您使用延迟绑定,但折叠排列并将其编译在一起。除非您的排列ons的代码量相差悬殊,每个排列增加一点点文件大小,而使用更少的排列可能会对您有所帮助。是的,这听起来很连贯:部署时只应包括服务器端(和共享)的类。这可以通过gradle脚本(或ant,maven)实现自动化