谷歌应用引擎,静态文件的最大数量是多少?

3
我正在开发一款谷歌应用引擎应用程序,其中会有用户个人资料的功能。我正在查看谷歌应用程序的在线教程,发现最大静态文件数(应用文件和静态文件)不应超过3000。我担心当用户数量增加时,用户是否能够上传他们的图像。这个限制仅适用于免费配额还是在计费后也一样?文档中提到这是超出免费配额的额外限制。
请给予建议。
提前致谢。
3个回答

5
欢迎来到Stack Overflow!
App Engine的一个限制是您不能直接从应用程序向文件系统写入。静态文件是指HTML、CSS、JavaScript和图像等全局应用程序,当您部署时需要手动上传。它们上传到并且由处理动态内容的不同服务器提供服务。
由于您无法从应用程序向文件系统写入,因此用户上传的文件必须保存为数据存储中的blob。这些不被视为静态文件。正如其他人所提到的,您可以使用S3或Blobstore API,但这两者都需要计费。使用免费配额,每个实体最多可达到1MB,每个HTTP请求和响应最多可达到10MB。使用具有BlobProperty的标准实体,您可以轻松地存储和提供高达1MB的动态上传文件,如果您想要花点心思并将blob存储在多个实体的片段中,则可达到10MB。

2
有一个新的服务叫做BlobStore,它可以让您将二进制数据存储在数据库中。此外,您可能还想了解Amazon S3作为数据存储的方式。如果用户上传的是图片,则无法将其存储为静态文件。静态文件是包含在您的GAE项目中的文件,如html和png/jpg/gif文件。

谢谢您的回复,Brenna。但是我对您发布的内容有疑问。如果我们使用blobstore来存储二进制文件,那么很好。但是如果我们将它们保存在目录/文件夹中作为文件,则应将其视为静态文件。如果我错了,请纠正我。无论如何,我会考虑将图像存储在数据库中。 - Ankit Jaiswal
你不能在GAE上写入文件系统。 - Robby Pond

0

正如其他人所提到的,对于更动态的内容,例如用户上传的文件,应将其作为blob存储在数据存储中,或者如果它们更大,则作为Blobstore对象(最大大小为2GB)。

3000个静态文件是相当合理的,除非您有很多静态资产(例如图像、HTML、CSS和JS文件)。然而,对于Python源代码,您还有另一种解决方法,那就是将所有.py文件放入单个ZIP中,以便它们不会对计数造成太大影响。这里有一篇文章描述了如何做到这一点:

在App Engine上使用Django 1.0和Zipimport

只需注意,本文讨论了如何将Django的源代码与App Engine捆绑在一起;但是,除非您正在使用1.3或使用分支,否则这是不必要的。App Engine系统已经免费为您提供了0.96或1.2.5。

更新(2011年3月):在SDK 1.4.3中,App Engine团队发布了文件API,允许您使用Blobstore以编程方式读/写文件/数据。这适用于PythonJava。更多信息可以在相应的博客文章中找到。除了Blobstore之外,公共路线图还显示了将来将集成Google存储访问的功能。

更新(2011年9月):在SDK 1.5.4中,App Engine团队将Blobstore文件大小限制从2GB删除,以允许无限大小的文件。但是,您需要按GB付费存储。

更新(2011年10月):在SDK 1.5.5中,App Engine团队将文件的最大数量从3000个扩展到10000个,这对用户来说是一个巨大的提升。此外,单个文件的最大大小也从10MB增加到32MB。另一个与存储相关的改进是用户现在可以直接从他们的App Engine应用程序向Google的云存储写入数据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接