0

打包:这是一个简单的逻辑组文件,可以通过唯一名称引用并在HTTP请求程序中加载。使用ASP.NET MVC捆绑和缩小AWS CloundFront CDN文件?

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

这里是我的想法,

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

我想我所有的静态内容存储到AWS S3和CloudFront的配送环节为他们服务,并利用这些CDN路径到我的多个项目与捆绑&缩小

我一直在试图将所有来自CDN的JS文件捆绑到一个捆绑包(捆绑& 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" 
     )); 

任何帮助将不胜感激。

+0

最终,这个问题似乎并没有真正与S3或CloudFront相关......他们在这里的角色只是表现为静态文件服务器和CDN。另外,一般来说,“不起作用”不被认为是足够的信息。你需要解释它“不起作用”的方式。 –

回答

0

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

我已经使用ASP.Net MVC Bundle Config生成了JS和CSS文件的压缩和缩小版本。我们不能将多个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") 
     ); 

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

c。将“output.min.js”文件上传到S3存储桶中,并设置该对象的公共只读属性,添加具有远期到期日期的过期标题,并将S3存储桶配置为CDN。

答案=”缓存控制”,值=”最大年龄= 1814400” - [3周内] 密钥=”过期”,值=”星期四,二零二一年十二月三十〇日十六时00分00秒GMT” - [只有远期到期日]

d。现在,通过改变上面的代码(步a)到下面的代码配置您的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请求,而在释放模式。脚本的调试版本将以调试模式在本地绘制。