【发布时间】:2014-08-07 20:13:05
【问题描述】:
假设我有一个电子邮件地址簿模型:
class contact(db.Model):
email = db.EmailProperty()
image = #Hmm.
我的联系人的图像将存储在 Blobstore 中,并以各种尺寸提供。
那么,我是否应该使用db.ReferenceProperty(BlobInfo) 以便我可以通过以下方式提供服务:
get_serving_url(alice.image.key, size=x)
或者我应该使用db.StringProperty,这样我就不必为了获得密钥而进行第二次读取:
get_serving_url(alice.image, size=x)
或者我应该使用db.LinkProperty 作为基本 URL,后修复所需的大小:
alice.image+'=sx'
我不预见除了钥匙之外还需要任何东西,所以我认为第二个比第一个好。
虽然我不确定第三个是否是最佳,因为我不确定它是否与创建唯一 URL 一样有效,可以缓存该 URL 以避免重复生成相同的缩略图 - 或者是否已处理在这两种情况下都自动?
【问题讨论】:
-
stackoverflow.com/questions/9362001/… 可能是一件有趣的事情。如果您确定您的 blob 不会大于 1Mb,并且您并没有真正考虑成本,那么将它们保存在数据存储中会更简单。如果您查看成本或有 > 1Mb blob.... 需要 blobstore
-
@Julldar 我不是在比较存储 blob 的位置 - 我在问如何最好地从 Datastore 实体引用我的 Blobstore blob .
-
那么在这种情况下,是的,第 2 次 > 第 1 次,仅仅是因为您削减了一次,因此您的通话次数更少,结果更便宜,结果更快......对于第 3 次......可能需要谷歌工程师权衡一下,我不知道他们如何神奇地处理其中一些事情
标签: google-app-engine google-cloud-datastore blobstore