我們正在將內部部署應用程序遷移到Azure雲。內部公司用戶經常通過管理界面將全尺寸圖像上傳到我們的網站(現在將這些圖像發送到Azure blob存儲)。該網站負責在請求時創建正確的圖像大小。所以,現在是什麼情況的權利(對環境的前提下)是這樣的:針對Azure/CDN編程
1)用戶上傳全尺寸的文件。
2)當通過GetImage HTTP處理程序(即http://www.site.com/GetImage.aspx?imageid=15&height=100&width=100)請求較小的版本時,處理程序將檢查是否先前已創建該大小的該圖像的版本。如果是這樣,它將直接寫入響應流。如果不是,則需要一秒來調整其大小,將其保存到「/ iamges/cache」目錄並將調整大小的圖像寫入響應流。
3)該文件被請求在該大小它返回先前創建的圖像下的時間。
所以,我要實現相同的類型使用Azure和Blob存儲機制,但我有一對夫婦的憂慮:
1),我不能簡單地檢查,看看是否存在斑點。我必須先下載blob,然後調用FetchAttributes來查看它是否引發異常。但是,這樣做實際上會下載圖像。所以,這不是圖像請求的數量的兩倍(一個用於查看是否存在,另一個用於顯示給用戶)?
2)假設圖像不在大小,我需要它存在(即BLOB /images/cache/image_15_100_100.jpg不存在 - 編號15,100×100像素)。所以我曾經向CDN發出過請求,看看它是否存在。現在我必須下載一個5-10 MB的完整大小的映像(而不是從我們的內部文件系統快速讀取它),在內存中加載該5-10 MB映像,調整大小並重新上傳到CDN。這似乎很耗時間,特別是當我可以在一個請求中有10-15個這樣的圖像時。
我知道Azure是比較新的,但有任何接近「最佳實踐」爲這種類型的互動與Blob存儲?我可以考慮另一種方法嗎?這似乎是圖像大小調整的很多開銷,所以我想我必須缺少某些東西或忽略其他解決方案。
是預定的可能的圖像尺寸請求或者是他們完全任意? – Omar 2011-01-10 15:27:34