Объединение CSS и JS в главных страницах и просмотр страниц с помощью SquishIt
Как вы реализуете SquishIt для связывания Css/J через View Pages и рендеринга на главной странице? Я думал, что мог бы использовать ContentPlaceHolder над частью Render, но, кажется, есть какое-то странное поведение, когда он иногда добавляет 3 файла (1 на странице просмотра и 2 на главной странице), но в других случаях будет игнорировать файл, добавленный из представления Page.
index.aspx
<asp:Content ContentPlaceHolderID="CssFiles" runat="server">
<% CssHelper.Add("home.css"); %>
</asp:Content>
Site.Master
<asp:ContentPlaceHolder ID="CssFiles" runat="server" />
<% CssHelper.Add("reset.css"); %>
<% CssHelper.Add("master.css"); %>
<%=CssHelper.Render() %>
Мое текущее решение - это статическая оболочка вокруг статического класса Bundle SquishIt, который хранит BundleBuilder в HttpContext.Current.Items.
Мне интересно, если это было сделано успешно и как так.
2 ответа
Я думаю, что вы можете немного упустить момент объединения CSS и Javascript. Если вы собираетесь добавлять файлы css или js в каждом представлении в сочетании с файлами главной страницы, то вы создаете тонну небольших наборов, которые каждый пользователь должен загружать каждый раз.
Если у вас нет тонны (а я имею в виду ТОННА) Javascript и Css, то вам лучше объединить ВСЕ ваши css и javascript в один пакет. Таким образом, пользователь сначала загружает его, а затем он кэшируется.
Если у вас есть TON css и javascript, используйте функцию именованных комплектов и создайте комплекты для разных разделов своего сайта. Но суть в том, что вы хотите минимизировать количество создаваемых вами пакетов, чтобы пользователю не приходилось загружать файлы.
Единственное исключение из этого - для мобильных браузеров, где они имеют определенные ограничения по размеру кэширования.
Вы можете прыгнуть с корабля и попробовать Chirpy: http://chirpy.codeplex.com/
Или вы можете изменить подход ZController в соответствии со своими предпочтениями: http://www.weirdlover.com/2010/05/11/more-better-harder-zippy-cache-controller-in-asp-net-mvc/
Я согласен с Джастином, хотя (и люблю SquishIt, как это). Вам, вероятно, лучше создавать меньше больших пакетов.