2013-06-24 73 views
1

我目前有兩個選項來在blobstore上存儲一些圖像。在GAE上存儲blob圖像的正確方法

我有一個用戶模型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() 

這兩種方法是否有顯着差異,如果是的話,哪個更好?謝謝。

回答

2

你應該存儲這兩個。 BlobReference能夠刪除實際的BLOB和URL,以避免每次調用get_serving_url(),這可能會很慢。除非調用delete_serving_url(),否則由get_serving_url()返回的URL將不可更改,以防需要重置該URL,因爲該URL是公開的但不可推測。

+1

爲防萬一還不清楚,get_serving_url可能很慢,所以存儲URL將有助於加快頁面加載速度。 – dragonx

+0

@dragonx我更新了我的答案,強調它 – Lipis

+0

非常好!謝謝。 –

0

使用BlobReferenceProperty。如果你存儲了serve_url,你不能真的刪除blob,因爲你沒有任何參考。

1

您應該將兩個參考文件保存在模型中。您可以使用blobReferenceProperty引用最新版本的blob進行維護(刪除和更新)以及提供圖像的url,因爲您只需要獲取一次服務URL。