使用ASP.NET MVC捆绑和缩小AWS CloundFront CDN文件?

时间:2016-03-03 09:31:36

标签: asp.net-mvc amazon-s3 cdn bundling-and-minification asp.net-bundling

捆绑:这是一个简单的逻辑逻辑组,可以通过唯一名称引用并在HTTP请求者上加载。

缩小:这是从代码中删除不必要的空格,换行符和注释以减小其大小从而缩短加载时间的过程。

这是我的想法,

基本上我使用多个CCS,JS和Image文件来实现代码的模块化,可读性和可维护性。这里有多个JS和CSS文件需要来自浏览器的多个HTTP请求,这会降低我的网页的性能和加载时间,在某些情况下会导致网站整体性能下降。

我想将所有静态内容存储到AWS S3中,并通过CloudFront分发链接为其提供服务,并将这些CDN路径用于我的多个项目 with bundling&缩小

我一直在尝试将所有JS文件从CDN捆绑到一个捆绑包中(对于Bundling& Minication),如下面的代码,但这不起作用!

var myCDN = "http://cdn.myawsdomain.com/";
bundles.Add(new ScriptBundle("~/bundles/js", myCDN)
        .Include(
                 "~/MyS3BucketName/Scripts/jquery.cookie.js",
                 "~/MyS3BucketName/Scripts/bootstrap.min.js",
                 "~/MyS3BucketName/Scripts/wow.min.js"
               ));

还尝试下面的代码,但这不起作用!

bundles.Add(new ScriptBundle("~/bundles/js")
       .Include(
       "http://cdn.myawsdomain.com/MyS3BucketName/Scripts/jquery.cookie.js",
       "http://cdn.myawsdomain.com/MyS3BucketName/Scripts/bootstrap.min.js",
       "http://cdn.myawsdomain.com/MyS3BucketName/Scripts/wow.min.js"
       ));

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题,因为这可能对某人有帮助。

我使用ASP.Net MVC Bundle Config生成了JS和CSS文件的压缩和缩小版本。我们不能在bundle config中将多个CDN组合在一起(仅一个脚本)。

我已经执行了以下步骤来生成压缩和缩小的JS& CSS文件,

一个。使用脚本包虚拟路径(“〜/ scripts / bundle”)在bundle config中包含必要的JS文件,并检查网页是否在浏览器中加载了没有错误。

BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;

bundles.Add(new ScriptBundle("~/scripts/bundle")
       .Include("~/Yourscriptfile1.js")
       .Include("~/Yourscriptfile2.js")
       .Include("~/Yourscriptfile3.js")
        );

湾要将所有这些JS文件压缩并缩小为一个文件,请从本地计算机浏览器向虚拟路径(http://localhost:254/scripts/bundle)发送HTTP请求,并将响应保存到“output.min.js”文件中。

℃。将“output.min.js”文件上传到S3存储桶并将此对象设置为public read-only属性,添加具有远期到期日期的expire标头,并将S3存储桶配置为CDN。

Key =“Cache-Control”,Value =“max-age = 1814400” - [3周] Key =“Expires”,Value =“Thu,20 Dec 2021 16:00:00 GMT” - [远期未来的到期日期]

d。现在通过将上面的代码(步骤a)更改为以下代码

,在bundle配置文件中配置CDN
BundleTable.EnableOptimizations = true;
bundles.UseCdn = true;

string CDN = "http://cdn.mydomain.io/Scripts/compress/output.min.js";
bundles.Add(new ScriptBundle("~/scripts/bundle", CDN)
        .Include("~/Yourscriptfile1.js")
        .Include("~/Yourscriptfile2.js")
        .Include("~/Yourscriptfile3.js")
        );

在上面的代码中,将在发布模式下从CDN请求脚本。脚本的调试版本将以调试模式在本地绘制。