asp.net-mvc - ASP.NET MVC : returning a CDN images from controller

标签 asp.net-mvc image cdn

我知道如何从 MVC Controller 返回图像,但想知道从 MVC Controller 返回 CDN 中的图像是否会违背使用 CDN 处理图像的目的。使用以下代码是否会导致托管 Web 应用程序的 Web 服务器从 CDN 下载,然后让用户可以从 Web 服务器下载该应用程序?图像是否下载了两次,一次从 CDN 到网络服务器,然后从网络服务器下载到用户?如果是这样,这比直接在网络服务器上托管图像更糟糕吗?或者图像只下载一次,直接从 CDN 发送给最终用户?

如何从 MVC Controller 返回图像并同时利用 CDN?

    public ActionResult Thumb(int id)
    {
        //process 
        var file = Server.MapPath(" path to image in the CDN ");
        //do your stuff
        return File(file, "image/jpg", Path.GetFileName(file));
    }

最佳答案

在 Controller 操作中,您需要执行 HTTP 请求以从远程服务器获取图像:

public ActionResult Thumb(int id)
{
    using (var client = new WebClient())
    {
        byte[] image = client.DownloadData("http://cdn.foo.com/myimage.jpg");
        return File(image, "image/jpg");
    }
}

然后:

<img src="@Url.Action("Thumb")" alt="" />

显然现在图像被下载了两次。一次来自 CDN 的 Controller ,一次来自客户端。这完全违背了该 Controller 操作的目的,您可以直接从 CDN 引用图像:

<img src="http://cdn.foo.com/myimage.jpg" alt="" />

这显然假设客户端可以访问 CDN。

当然,如果您的 Controller 操作不仅仅是从 CDN 获取图像并将其流式传输到客户端(例如从 CDN 获取图像并调整其大小),那么您绝对应该采用第一种方法。

关于asp.net-mvc - ASP.NET MVC : returning a CDN images from controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164333/

相关文章:

javascript - 从定义的 <td> 获取值 (ASP.NET MVC)

asp.net-mvc - 在 View 中无法识别 ViewModel

iphone - 图像无法加载到 iPhone 的 UIWebView 中

javascript - 使用 MVC 5 将图像发送到客户端并在新窗口或选项卡中打开

c# - Entity Framework 中首先从数据库更新模型的元数据不起作用

c# - 如何在 View ASP MVC 中使用模型数据?

android - 以编程方式将图像附加到消息应用程序

javascript - 使用 CDN 时使用不带 'require' 的库

php - Symfony2/ Twig : Generate Alternate Absolute URL Path for use with CDN?

Azure CDN Verizon Premium 隐藏 SAS token GET 方法错误 403