Google 应用引擎,静态文件最大数量?

3 投票
3 回答
1595 浏览
提问于 2025-04-16 00:44

我正在开发一个应用程序,想要实现用户个人资料的功能。我在查看谷歌应用的在线教程时发现,静态文件(包括应用文件和静态文件)的数量最多不能超过3000个。我有点担心,如果用户数量增加,用户能否上传他们的图片。这个限制是仅针对免费配额的,还是在收费后也会存在?文档中提到这是比免费配额多出的额外限制。

请给点建议。

提前谢谢你。

3 个回答

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 Storage访问的功能。

更新(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的云存储

2

有一个新的服务叫做 BlobStore,它可以让你把二进制数据存储在数据库里。如果你想存储数据,也可以考虑 Amazon S3。如果用户上传图片,这些图片不能作为静态文件存储。静态文件是指那些包含在你的GAE项目中的文件,比如html文件和png/jpg/gif格式的图片。

5

欢迎来到 Stack Overflow!

在 App Engine 中,有一个限制就是你的应用程序不能直接写入文件系统。静态文件指的是一些全局的文件,比如 HTML、CSS、JavaScript 和图片,这些文件在你部署应用时需要手动上传。它们会被上传到和处理动态内容的服务器不同的地方。

因为你的应用不能直接写文件,所以用户上传的文件必须保存到数据存储中,作为二进制大对象(blob)。这些文件不算静态文件。正如其他人提到的,你可以使用 S3 或 Blobstore API,但这两者都需要付费。使用免费的配额,每个实体的大小最多可以是 1MB,每个 HTTP 请求和响应的大小最多可以是 10MB。如果你使用标准实体和 BlobProperty,你可以轻松存储和提供动态上传的文件,最大可以是 1MB,如果你想更复杂一点,可以把你的 blob 切分存储在多个实体中,这样最大可以达到 10MB。

撰写回答