我正在谷歌应用程序引擎中开发一个具有用户配置文件功能的应用程序。我正在浏览Google App的在线教程,我发现静态文件(应用程序文件和静态文件)的最大数量不应超过3000.我担心当用户数量增加时用户是否可以上传他们的图像。这是免费配额的限制,还是在结算后。在文档中,它被提及作为免费配额的附加限制。
请建议。
提前致谢。
答案 0 :(得分:5)
欢迎使用Stack Overflow!
App Engine的一个限制是您无法从应用程序直接写入文件系统。静态文件可以是HTML,CSS,javascript和图像,它们是应用程序的全局文件,并在部署时手动上载。与处理动态内容的服务器不同,它们会上传到不同的服务器并从中提供服务。
由于您无法从应用程序写入文件系统,因此用户上传的文件必须以blob格式保存到数据存储区。这些不被视为静态文件。正如其他人所提到的,您可以使用S3或Blobstore API,但这两者都需要计费。使用免费配额,每个实体最多可达1MB,每个HTTP请求和响应最多可达10MB。使用带有BlobProperty的标准实体,您可以轻松存储和提供高达1MB或10MB的动态上传文件,如果您想要获得想象并将blob存储在多个实体的切片中。
答案 1 :(得分:2)
有一项名为BlobStore的新服务,可让您将二进制数据存储在数据库中。此外,您可能希望将Amazon S3作为数据的存储空间。如果用户正在上传图像,则无法将其存储为静态文件。静态文件是GAE项目中包含的文件,如html和png / jpg / gif文件。
答案 2 :(得分:0)
正如其他人所提到的,对于更多动态内容,例如用户上传的文件,这些内容应作为blob进入数据存储区,或者如果它们更大,则作为Blobstore对象(最大大小为2GB)。
3000静态文件在某种程度上是合理的,除非你有很多静态资产(例如图像,HTML,CSS和JS文件)。然而,对于Python源代码,你有另一种解决方法,那就是将所有.py文件放入一个ZIP中,这样它们就不会那么糟糕。这是一篇描述如何执行此操作的文章:
Using Django 1.0 on App Engine with Zipimport
请注意,本文讨论了如何将Django的源与App Engine捆绑在一起;但是,除非你做1.3或使用分叉,否则这是不必要的。 App Engine系统已经免费提供0.96或1.2.5。
UPDATE(2011年3月):在SDK 1.4.3中,App Engine团队发布了Files API,允许您使用Blobstore以编程方式读/写文件/数据。这适用于Python和Java。更多信息可在相应的blogpost中找到。除了Blobstore之外,public roadmap还显示了集成Google存储空间访问权限的未来功能。
更新(2011年9月):在SDK 1.5.4中,App Engine团队从2GB中删除了Blobstore文件大小限制,以允许无限大小的文件。但是,您支付每GB存储空间。
更新(2011年10月):在SDK 1.5.5中,App Engine团队将最大文件数从3000扩展到10000,这对用户来说是一个很大的推动力。此外,最大的单个文件大小从10MB增加到32MB。另一个与存储相关的改进是users can now write to Google's Cloud Storage directly from their App Engine app。