我目前有两个选项可以在blobstore上存储一些图像。
我有一个用户模型class User(db.Model)
,我正在为用户保存一个头像。
一种选择是将头像保存为blobstore.BlobReferenceProperty()
,然后使用user.avatar引用中的get_serving_url提供图像。
class User(db.Model):
avatar = blobstore.BlobReferenceProperty()
url = get_serving_url(user.avatar)
另一个选项是使用get_serving_url()
获取图像的路径,并将其作为LinkProperty保存在用户模型中,稍后只需使用此链接来提供图像。
url = get_serving_url(image_file)
class User(db.Model):
avatar = db.LinkProperty()
两种方法之间是否存在显着差异?如果是,那更可取的是什么?谢谢。
答案 0 :(得分:2)
你应该存储两者。 BlobReference
能够删除实际的blob和URL,以避免每次调用get_serving_url()
,这可能会很慢。除非get_serving_url()
被调用,否则delete_serving_url()
返回的网址是不可更改的,以防需要重置,因为该网址是公开的,但是不可提及。
答案 1 :(得分:1)
您应该在模型中保存两个引用。您可以使用blobReferenceProperty引用最新版本的blob进行维护(删除和更新)以及提供图像的URL,因为您只需要获取一次服务URL。
答案 2 :(得分:0)
使用BlobReferenceProperty
。如果你存储了serving_url,你就无法真正删除blob,因为你没有任何对它的引用。