gpt4 book ai didi

c# - MVC4 捆绑来自不同域的 javascript 或 css 文件?

转载 作者:行者123 更新时间:2023-11-30 12:29:33 24 4
gpt4 key购买 nike

在 MVC4 的 Web.Optimization 捆绑/最小化中,是否可以在一个站点(我们的静态无 cookie 域)上注册一个 bundle ,然后在另一个站点(我们的 webapp 域)上使用该 bundle ?

例如 static.myapp.com 有一个 BundleConfig.cs

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

那个包可以在 webapp 域的 View 中使用吗,例如 www.myapp.com 在 Site.Master 中有这个

<%= Scripts.Render("static.myapp.com/Scripts/static") %>

这可以通过 MVC4 捆绑来完成吗?从无 cookie 静态域提供静态文件是众所周知的性能改进。

最佳答案

ASP.net MVC 中的捆绑允许您通过在运行时而不是设计时替换占位符 Scripts.Render() 来优化脚本和样式表的部署。当页面被解析并推送到客户端时,注册到调用服务器的包被解析到输出缓冲区中。因此,提供内容的应用程序必须运行捆绑服务。如果未运行捆绑的 Web 应用程序遇到 Scripts.Render() 元素,它将输出 null 或抛出异常。

但是,您可以在 RegisterBundles 方法中使用 CDN 引用,例如:

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"));

在上面的代码中,在 Release模式下将从 CDN 请求 jQuery,在 Debug模式下将在本地获取 jQuery 的调试版本。使用 CDN 时,您应该有一个回退机制,以防 CDN 请求失败。

编辑

您可以使用 ASP.Net MVC 作为来自 static.myapp.com 的 CDN,例如

routes.MapRoute(
"CDN",
"cdn",
new { controller = "Webpage", action = "Fetch" }
);

[OutputCache(Duration=300, Location=OutputCacheLocation.Any)]
public ActionResult Fetch()
{
return new FileStreamResult(
GetScriptBundle(Request.QueryString["url"]),
"text/javascript");
}

关于c# - MVC4 捆绑来自不同域的 javascript 或 css 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298568/

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