2012-02-27 72 views
2

如果我要使用Google App Engine制作项目(使用Python),并且此项目包含小用户生成的图像(一旦上传,将会被访问很多,但不会再动态更改或更改) ,谷歌应用程序引擎BlobStore会使用(在成本,速度等方面)吗?或者GAE或客户端连接到Amazon S3并在那里存储图像更有意义,因为这些文件最终会变成静态的?Google App Engine BlobStore作为图像主机?

对于什么是值得的,生成的图像文件都被认为是公共的,而不是用户私有的,并且他们将在另一个子域上是完全正确的。所有文件都是固定调色板,16个颜色的PNG完全为19x19像素。他们的URL/ID将在GAE数据存储中引用,并具有更多属性(如creatorId),用于在Web应用程序中处理/显示它们。

谢谢!

回答

1

几天前我问了一个similar question。 我坚持将图像作为BLOBS(不在BlobStore中)存储在DataStore中,并确保我设置了Cache Control标头,以确保它们不会被请求过多次。

1

对于这样的小图像,您可以简单地使用数据存储。即使使用1Gb的空间,它也可以让您在免费配额中轻松存储几张19x19像素的图像。使用BlobStore稍微复杂一点,因为API更加复杂,实际的sotorage过程涉及的步骤多于将二进制数据存储在DataStore中的步骤。不过,我建议你实现memCache来检索这些图像,因为你认为之后不会被修改。您不希望一遍又一遍地查询数据库中相同的19 * 19 * 4字节。

8

如果您关心速度和成本,目前最好的方法是将它们存储在blobstore中并使用get_serving_url()link)。这些图像由谷歌的高性能图像服务器提供,并且永远不会花费您的实例小时数,仅仅是带宽,并且您不必担心memcache。

+0

非常感谢Mj! – 2012-02-27 21:55:53