Я использую ASP.NET MVC 4, объединяющие и минимизирующие функции в пространстве имен Microsoft.AspNet.Web.Optimization
(например, @Styles.Render("~/content/static/css")
).
Я хотел бы использовать его в сочетании с CDN Windows Azure.
Я просмотрел пользовательский BundleTransform
, но контент пока еще не оптимизирован.
Я также изучал синтаксический анализ и загрузку оптимизированного потока во время выполнения, но для меня это похоже на хак, и мне это не очень нравится:
@StylesCdn.Render(Url.AbsoluteContent(
Styles.Url("~/content/static/css").ToString()
));
public static IHtmlString Render(string absolutePath)
{
// get the version hash
string versionHash = HttpUtility.ParseQueryString(
new Uri(absolutePath).Query
).Get("v");
// only parse and upload to CDN if version hash is different
if (versionHash != _versionHash)
{
_versionHash = versionHash;
WebClient client = new WebClient();
Stream stream = client.OpenRead(absolutePath);
UploadStreamToAzureCdn(stream);
}
var styleSheetLink = String.Format(
"<link href=\"{0}://{1}/{2}/{3}?v={4}\" rel=\"stylesheet\" type=\"text/css\" />",
cdnEndpointProtocol, cdnEndpointUrl, cdnContainer, cdnCssFileName, versionHash
);
return new HtmlString(styleSheetLink);
}
Как я могу автоматически загрузить связанные и минированные версии в свой CDN Windows Azure?