Я использую функции объединения и минимизации 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?
_versionHash
представляет строку запросаv
, которая добавляется к вашим ресурсам. В приведенной выше реализации он сравнивает ее с ранее кэшированной строкой. - person Martin Buberl   schedule 11.06.2015