gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:13:32 25 4
gpt4 key购买 nike

我知道如何从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com