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請求,而在釋放模式。腳本的調試版本將以調試模式在本地繪製。