0
Есть ли возможность изменить способ использования System.Web.Optimization для пакетов?Изменить asp.net mvc bundles fingerprinting
От:
<script src="/bundles/js/bundlename?v=GMFuN8gzKMcwk5BwaMfgjUlieAXKThyQd8twrVplJ8A1"></script>
Чтобы что-то обычай, как это:
<script src="/bundles/js/v-GMFuN8gzKMcwk5BwaMfgjUlieAXKThyQd8twrVplJ8A1/bundlename"></script>
UPDATE: Не идеал, но маленький неприятный обходной путь:
public static class BundlesHelper
{
public static IHtmlString RenderScripts(params string[] paths)
{
#if DEBUG
return System.Web.Optimization.Scripts.Render(paths);
#endif
// Get raw string
var rawString = System.Web.Optimization.Scripts.Render(paths).ToHtmlString();
// Get version value
var version = Regex.Match(rawString, @"\?v=([0-9a-zA-Z_-])+").Value;
// Remove old hash
rawString = rawString.Replace(version, "");
// Remove script end tag
rawString = rawString.Replace("</script>", "");
// Get last index of "/"
var index = rawString.LastIndexOf('/');
// Return new string
return new HtmlString(rawString.Insert(index, "/v-" + version.Replace("?v=", "")) + "</script>");
}
}
Да, вы правы. Но я хочу изменить местоположение с помощью Rewrite Rule, поэтому я все еще ищу способ изменить то, как будет выглядеть отпечаток пальца. –
Это невозможно без какого-либо * очень хриплого и уродливого решения, и нет никакой функциональной выгоды для этого. Почему это даже имеет значение? –
Поскольку некоторые инструменты тестирования SEO не любят эти строки запросов, и мы используем решение для статических файлов, отпечатанных на основе этого решения http://madskristensen.net/post/cache-busting-in-aspnet, поэтому оно быть приятным иметь однородное решение по всему проекту. –