рджреЛрд╕реНрддреЛрдВ System.Web.Optimization рдмрдВрдбрд▓ Windows Azure рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде

рдореИрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрдм, рдлрд┐рд░ рднреА, рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ System.Web.Optimization рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрдВрдбрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рджреВрд╕рд░реЗ рджрд┐рди, "1.0.0-Beta2" рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЧрддрд┐ рдЪрд╛рд╣рд┐рдП ...



рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓?


<head> @BlobStorageProvider.Render("~/mainlayout", BlobStorageProvider.ContentType.Style) </head> 

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


 /// <summary> ///   - Blob' /// </summary> private const string CachedStorageLink = "http://cdn.m6lab.com/{0}/{1}"; 
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХреИрд╢рд┐рдВрдЧ рд╕реЗ рд▓рд┐рдВрдХ рд╣реИ рдмреВрдБрджред рдмреВрдБрдж рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐ рдЦрд░рд╛рдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмреВрдБрдж рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдмреИрд╕рд╛рдЦреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛:
 //     var content = new WebClient().DownloadString("{URL  }" + url); 


рд╕рдВрдкреВрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб:
 public class BlobStorageProvider { /// <summary> ///      /// </summary> public enum ContentType { Script, Style } /// <summary> ///   - Blob' /// </summary> private const string CachedStorageLink = "http://cdn.m6lab.com/{0}/{1}"; /// <summary> ///  Blob- /// </summary> private const string ContainerName = "robofollower"; /// <summary> ///    Blob' /// </summary> private static readonly CloudStorageAccount StorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName={Storage Account};AccountKey={Primary Key}"); /// <summary> ///  Blob'a /// </summary> private static readonly CloudBlobContainer Container = StorageAccount.CreateCloudBlobClient().GetContainerReference(ContainerName); /// <summary> ///    CDN /// </summary> private static readonly Dictionary<string, string> CdnLinks = new Dictionary<string, string>(); /// <summary> ///    Blob- /// </summary> /// <param name="virtualPath"></param> /// <param name="contentType"></param> /// <returns></returns> private static void Upload(string virtualPath, ContentType contentType) { //      var url = Scripts.Url(virtualPath); //     var content = new WebClient().DownloadString("{URL  }" + url); //    var formatted = url.ToString().Replace("/", "").Replace("?", "").Replace("v", "").Replace("=", "").Replace("-", ""); var blobContentType = string.Empty; //      switch (contentType) { case ContentType.Script: formatted += ".js"; blobContentType = "text/javascript"; break; case ContentType.Style: formatted += ".css"; blobContentType = "text/css"; break; } //      var blob = Container.GetBlockBlobReference(formatted); blob.Properties.CacheControl = "public"; blob.Properties.ContentType = blobContentType; //    blob.UploadFromStream(new MemoryStream(Encoding.ASCII.GetBytes(content))); //      CdnLinks.Add(virtualPath, string.Format(CachedStorageLink, ContainerName, formatted)); } public static IHtmlString Render(string virtualPath, ContentType contentType) { if (!CdnLinks.ContainsKey(virtualPath)) Upload(virtualPath, contentType); switch (contentType) { case ContentType.Style: { var tag = new TagBuilder("link"); tag.MergeAttributes(new Dictionary<string, string> { { "href", CdnLinks[virtualPath] }, { "rel", "stylesheet" } }); return new HtmlString(tag.ToString(TagRenderMode.SelfClosing)); } case ContentType.Script: { var tag = new TagBuilder("script"); tag.MergeAttributes(new Dictionary<string, string> { { "src", CdnLinks[virtualPath] } }); return new HtmlString(tag.ToString(TagRenderMode.SelfClosing)); } } return null; } } 

Source: https://habr.com/ru/post/In157597/


All Articles