我有一组有限的图片(> 1000)将用于Google App Engine上托管的网站。在阅读文档时,我注意到Images库提供了各种图像处理功能。引起我注意的一种方法是
get_serving_url(blob_key, size=None, crop=False, secure_url=None)
返回提供图像的URL。然后文档继续说:
此网址格式允许动态调整大小和裁剪,因此您不需要 需要在服务器上存储不同的图像大小。提供图像 通过高度优化的无cookie基础架构实现低延迟。
我想知道在提供静态文件夹中的图像或使用Image服务之间是否存在速度方面的优势。
答案 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)。