将cdn附加到mvc app中的图像

时间:2013-01-04 01:23:39

标签: asp.net-mvc asp.net-mvc-4 cdn

我正在使用asp.net mvc 4应用程序。我想设置我的网站图像,通过cdn呈现。

MVC中是否有任何机制来设置解析为cdn的图像路径?我希望cdn是动态的,所以我可以通过应用程序设置来配置它。

我有几个想法对我开放

  • 使用Html Helper解析所有带有cdn的图像。唯一的问题是我使用spring.net依赖注入并且不相信它直接注入静态类
  • 创建我放置在我的控制器上的属性,该属性检查我的视图中的html输出,使用正则表达式查找所有未解析的域并解决它们。关注此
  • 的表现
  • 创建一个从我的视图返回的操作结果,该结果与我之前的观点类似。

有关此的任何想法/提示吗?

1 个答案:

答案 0 :(得分:0)

使用CDN时存在很大问题,特别是在CSS方面。

这里的一些想法: http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

public static void RegisterBundles(BundleCollection bundles)
{
    //bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
    //            "~/Scripts/jquery-{version}.js"));

    bundles.UseCdn = true;   //enable CDN support

    //add link to jquery on the CDN
    var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";

    bundles.Add(new ScriptBundle("~/bundles/jquery",
                jqueryCdnPath).Include(
                "~/Scripts/jquery-{version}.js"));

    // Code removed for clarity.
}


</footer>

        @Scripts.Render("~/bundles/jquery")

        <script type="text/javascript">
            if (typeof jQuery == 'undefined') {
                var e = document.createElement('script');
                e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
                e.type = 'text/javascript';
                document.getElementsByTagName("head")[0].appendChild(e);

            }
        </script> 

        @RenderSection("scripts", required: false)
    </body>
</html>

它变得复杂但可以通过一些努力来完成。

关于此的一篇非常好的文章: http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html

希望其中一些有帮助

这里解决了行李路径解决问题: MVC4 StyleBundle not resolving images

在控制器中:

ViewBag.CDNPath= "http://thepathtomyddnserver";

在视图中:

<img src="@Html.Raw(@ViewBag.CDNPath)/logo1.png">

这很容易吗?