asp.net-mvc - 与云集成捆绑的建议策略和库

标签 asp.net-mvc asp.net-mvc-4 bundling-and-minification

我正在优化我的 ASP.net MVC 4 网站。我目前正在使用运行时捆绑来组合和缩小我的 JavaScript 和 CSS 内容。我希望在创建缩小内容时自动将其发布到 CDN(特别是 Amazon Cloudfront)。

我正在尝试确定将捆绑文件与 CDN 集成的最佳策略。我的具体问题是:

  • 是否有任何可用的库可以允许捆绑文件 保存到 CDN 而不是我的本地 Web 服务器?
  • 静态文件应该在捆绑之前从 CDN 中提取,还是应该在捆绑之前从本地 Web 服务器中提取?
  • 是否有任何机制可以仅从我的网络场(而非公众)启用 CDN 写入控制?

最佳答案

我个人并不认同“使用 CDN 处理所有静态数据!!”心态,所以我拒绝像你所描述的那样担心将本地脚本复制到 CDN。当然,可以从现有的主要 CDN(雅虎、微软、谷歌)引用大型库,但对于本地脚本来说,这真的不值得这么麻烦,IMO。

按照这个思路,我越来越喜欢SquishIt 。无需使用额外的 XML 配置或预初始化。只需将其包含在主文件或布局文件中,如下所示:

<%= Bundle.Css()
        .Add("~/Content/Reset.less")
        .Add("~/Content/Site.less")
        .Add("~/Scripts/rcarousel/widget/css/rcarousel.css")
        .Add("~/Scripts/jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css")
        .Add("~/Content/Fonts/Karla/stylesheet.css")
        .Render("~/Cache/Bundle.css") %>

<%= Bundle.JavaScript()
        .Add("~/Scripts/jquery-1.7.2.js")
        .Add("~/Scripts/jquery-ui-1.8.19.js")
        .Add("~/Scripts/modernizr-2.5.3.js")
        .Add("~/Scripts/rcarousel/widget/lib/jquery.ui.rcarousel.js")
        .Add("~/Scripts/jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.js")
        .Add("~/Scripts/jquery.youtubelite.js")
        .Render("~/Cache/Bundle.js") %>

话虽如此,还有更多关于你的观点:

1) 我不知道有任何支持自动 CDN 部署的捆绑库。这里通常的思路是让 CDN 从您的网站目录中提取并缓存它。这样,部署是通过拉动机制而不是推送来建立的。 This article描述如何使用 CloudFront 和 word press 站点设置源拉取。我确信 ASP.NET 的配置类似。

2) 从本地副本捆绑。您可能已经在开发中引用了本地副本,那么为什么要在上线之前将 CDN 添加到组合中呢?

3) 大多数云存储系统(Amazon S3、Azure 存储、Rackspace Cloud Files)都提供了一种将文件发布到云的方法,这些文件对公众保持只读状态。这取决于 API,因此该方法会根据您的云存储提供商的不同而有所不同。

关于asp.net-mvc - 与云集成捆绑的建议策略和库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272437/

相关文章:

c# - asp.net MVC 是否有应用程序变量?

asp.net-mvc - 如何在 mvc 的 apicontroller 中获取部分 View 字符串

c# - 带或不带虚拟目录的 CssRewriteUrlTransform

asp.net - webopt :bundlereference work in ASP. 如何上网?

c# - ASP.NET 在捆绑中使用嵌入式资源

c# - .NET : file uploading to server using http

c# - 附加类型为 'X' 的实体失败,因为相同类型的另一个实体已经具有相同的主键值

javascript - 我如何在 TinyMCE 中允许自闭标签?

asp.net-mvc-4 - 具有StructureMap的asp.net MVC 4

asp.net-mvc-4 - 在 WebAPI 和 MVC 之间共享一个内核