2014-10-02 63 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

相关问题