我个人并不认同“将 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 并将其缓存。通过这种方式,部署是通过拉机制而不是推送来建立的。本文介绍如何使用 CloudFront 和 word press 站点设置源拉取。我确信 ASP.NET 的配置是相似的。
2)从本地副本捆绑。您可能已经在开发中引用了本地副本,那么为什么要在上线之前将 CDN 添加到组合中呢?
3) 大多数云存储系统(Amazon S3、Azure Storage、Rackspace Cloud Files)都提供了一种将文件发布到云的方式,这些文件对公众保持只读状态。这取决于 API,因此该方法因您的云存储提供商而异。