我有大量文件存储在公共Azure blob容器中,所有这些文件都是通过我的ASP.NET MVC Web应用程序中的HTML直接引用的。作为示例,blob存储中的一个图像的路径如下所示:
//<my-storage-account-name>.blob.core.windows.net/public/logo.png
我想避免在我的HTML源代码中显示我的存储帐户名,而不是:
<img src="//<my-storage-account-name>.blob.core.windows.net/public/logo.png"/>
我更喜欢使用它:
<img src="/images/logo.png"/>
我想避免设置MVC路由并使用blob API将文件加载到响应流中,因此认为web.config解决方案可能是最简单的解决方案,即
<rule name="Image Redirect" stopProcessing="true">
<match url="^images/(.*)$" ignoreCase="false" />
<action type="Redirect" url="//<my-storage-account-name>.blob.core.windows.net/public/{R:1}" redirectType="Permanent" />
</rule>
问题:这是最有效的方法,因为任何页面一次可以加载30多张图像吗?或者我应该只使用公共blob URL,尽管我担心性能提升?
答案 0 :(得分:4)
我找到了一个Microsoft动手实验室,他们推荐使用web.config URL重写规则选项:
Hands on Lab: Maintainable Azure Websites: Managing Change and Scale(2014年7月16日)
(Code Snippet - WebSitesInProduction - Ex4 - UrlRewriteRule)
<system.webServer>
<rewrite>
<rules>
<rule name="redirect-images" stopProcessing="true">
<match url="img/(.*)"/>
<action type="Redirect" url="http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/{R:1}"></action>
</rule>
</rules>
</rewrite>
“注意:URL重写是拦截传入Web请求并将请求重定向到其他资源的过程.URR重写规则告诉重写引擎何时需要重定向请求,它们应该在何处重写规则由两个字符串组成:在请求的URL中查找的模式(通常使用正则表达式),以及用于替换模式的字符串(如果找到)。有关更多信息,请参阅ASP中的URL重写。 NET“。