2011-11-08 78 views
7

在Google App Engine的新定價方案下,我得到一個意外定價表,如下所示。減少數據存儲區讀取操作

enter image description here

罪魁禍首是,我得到了巨大的短短几個小時內,在「數據存儲讀取操作」增加了,雖然只有不到50個電話給我DownloadServlet

DownloadServlet將剛纔讀blob(通常小於1 MB),並將其返回給用戶。有什麼我可以做我的代碼優化,以便我不會如此快地達到免費配額限制。

+0

您應該切換到使用Blobstore,而不是將數據存儲在數據存儲區中作爲Blob。 –

+0

如果沒有看到您的代碼,這或多或少是不可能的。不過,爲什麼不預算一些增加的配額呢? –

+0

@NickJohnson該代碼已發佈。請看「DownloadServlet」的鏈接。 –

回答

9

您正在進行大量讀取操作,因爲您已將文件分割爲數據存儲區中的1MB塊。因此,您必須對每個塊進行一次讀取,並且由於您沒有使用關鍵字名稱或ID,因此您也正在爲每個塊進行查詢,從而進一步耗盡了您的配額。

將數據存儲在blobstore中。

3

如果您從數據存儲讀取的數據相對靜態(例如,博客條目的文本),則可以考慮緩存memcache中的數據。

無法保證數據可以保留在內存緩存中的時間有多長,因此您需要定期從數據存儲區重新獲取數據,以防內存緩存中的數據失效,但節省數據存儲區讀取操作將是相當可觀的。

+0

它沒有多大幫助。由於數據是專門針對個人用戶的。我會說<50位用戶,您會看到您的結算開始運行。 –