2014-10-02 94 views
0

我創建了一個文件系統抽象,我用相對路徑存儲文件,例如/uploads/images/img1.jpg在沒有連接到Azure的情況下獲取Blob Uri

這些可以保存在本地文件系統(相對於文件夾)或Azure中。然後,我還可以請求一種方法,讓我訪問該相對路徑的URL。

在Azure中,這是目前正在做類似如下:

public string GetWebPathForRelativePathOnUserContentStorage(string relativeFileFullPath) 
    { 

     var container = getCloudBlobContainer(); 
     CloudBlockBlob blob = container.GetBlockBlobReference(relativeFileFullPath); 

     return blob.Uri.ToString(); 
    } 

在一個普通的網站,有可能是說在一個頁面40張圖片 - 所以這得到的所謂像40倍。這首先是?我注意到有在生成的URL一個特定的模式:

https://[storageAccountName].blob.core.windows.net/[container_name]/[relative_path]

我可以放心地生成URL,而無需使用Azure存儲API?

回答

3

在一個普通的網站上,在一個頁面上可能會出現40個圖像 - 所以 這個get的被稱爲40次。這首先是緩慢的嗎?

根本不是。您上面編寫的代碼不會對存儲進行任何調用。它只是創建一個CloudBlockBlob對象的實例。如果您使用的是GetBlockBlobReferenceFromServer方法,那麼它會是一個不同的故事,因爲該方法會調用存儲。

`我注意到有在生成的URL的特定模式:

_HTTPS:// [storageAccountName] .blob.core.windows.net/[CONTAINER_NAME]/[RELATIVE_PATH]

我可以安全地生成該URL而不使用Azure存儲API嗎?

絕對是的。假設你只是使用標準的東西,那就太好了。非標準的東西將包括諸如使用自定義域用於blob存儲或連接到存儲帳戶的地理位置。

+0

是的,但比另一個快得多嗎?我寧願使用Azure API,但我的印象是很慢。 – 2014-10-02 14:37:32

+0

我不認爲你能夠測量兩者之間的時差。在一個循環中你正在創建新的對象(類型爲CloudBlockBlob),而在另一箇中你只是給字符串賦值。所以請選擇:)。我仍然會採用第一種方法,因爲這種方式可以讓你在安全的情況下失敗,因爲你試圖創建一個不使用.blob.core.windows.net後綴的blob url。 – 2014-10-02 14:44:13

相關問題