GAE - 提供图像

时间:2014-03-26 18:49:55

标签: python google-app-engine

我有一组有限的图片(> 1000)将用于Google App Engine上托管的网站。在阅读文档时,我注意到Images库提供了各种图像处理功能。引起我注意的一种方法是

get_serving_url(blob_key, size=None, crop=False, secure_url=None)

返回提供图像的URL。然后文档继续说:

  

此网址格式允许动态调整大小和裁剪,因此您不需要   需要在服务器上存储不同的图像大小。提供图像   通过高度优化的无cookie基础架构实现低延迟。

我想知道在提供静态文件夹中的图像或使用Image服务之间是否存在速度方面的优势。

2 个答案:

答案 0 :(得分:2)

动态调整图像大小和读取blob存储区,因为这里提到的另一个答案永远不会那么快。如果需要性能,则需要存储图像的静态副本。如果没有其他原因而不是缓存。如果可以,请首选静态版本,并且更喜欢静态版本之上的CDN。

如果您的内容来自您或用户提交,blob商店和静态商店之间的选择也可以围绕。如果用户提交,那么如果你因在app引擎上存储图像而陷入困境,那么blob商店通常就是这样。

在实践中,我们发现GAE的内部和定价不足以提供图像。相反,如果您特别担心快速提供图像,请考虑使用CDN。例如,您可以使用Amazon Cloudfront / S3组合或Rackspace Cloudfiles。在这两种情况下,使用服务URL与CDN之间绝对没有速度比较。

只需在创建时将内容直接推送到CDN,或者在blobstore中保留后备副本。我们在应用程序中执行的操作是先保留用户在blobstore中上传的图像,然后排队后台任务以将内容提交给CDN。缩略图等各种尺寸都是使用我们的CDN API生成的,我们通过App Engine从REST调用。如果用户在所有这些发生之前以某种方式访问​​我们的网站并且我们需要这些图片,我们只需向他们提供您在问题中引用的动态版本。速度要慢得多,但它确保我们在系统刷新或生成CDN内容时始终会有后退。但是,99%的用户会在CDN中点击快速版本。

编辑:我想要指出的是,应用引擎静态内容肯定是缓存的,而不是在我的真实世界体验中运行一个体面的CDN提供商的效率运行一个非常重要的应用程序引擎网站,每天都有很多独特的点击

答案 1 :(得分:0)

图像服务不存储或提供图像。图像可以从BlobStore或Google云端存储中提供,具体取决于您使用的选项。两种选择都提供非常快的响应时间。我相信从静态文件夹提供文件将提供非常相似的性能。

更新:

我注意到,对于GAE的新定价,他们将为静态文件收取与Google云端存储或BlobStore相同的价格,但GCS和BlobStore的免费配额比代码和静态文件更大(5GB) (1GB)。