在Master页面中结合CSS和JS并使用SquishIt查看页面

时间:2010-07-02 15:31:52

标签: asp.net javascript css squishit

如何实现SquishIt跨视图页面捆绑Css / J并在主页面中渲染它?我以为我可以在Render部分上方使用ContentPlaceHolder,但似乎有一些奇怪的行为,它有时会添加3个文件(视图页面中有1个文件,母版页中有2个文件),但其他时候会忽略从View中添加的文件页。

的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() %>

我目前的解决方案是围绕SquishIt的静态Bundle类的静态包装器,它将BundleBuilder保存在HttpContext.Current.Items中。

我很好奇这是否已成功完成以及如何做到这一点。

2 个答案:

答案 0 :(得分:12)

我认为你可能会忽略捆绑css和javascript的重点。如果您要在每个视图上添加css或js文件,并结合母版页文件,那么您每次都要创建大量的小包,用户必须每次下载。

如果您没有Javascript和Css的 ton (我的意思是TON),那么最好将所有css和javascript捆绑到同一个捆绑包中。这样,用户第一次获取下载它的命中,然后它被缓存。

如果你有一个css的css和javascript,那么使用命名的捆绑功能并为你网站的不同部分创建捆绑包。但重点是您希望最小化您创建的捆绑包的数量,以便用户不必继续下载文件。

唯一的例外是移动浏览器,它们具有一定的大小缓存限制。

答案 1 :(得分:1)

你可以跳船,尝试Chirpy:http://chirpy.codeplex.com/

或者,您可以修改ZController方法以适合您的喜好:http://www.weirdlover.com/2010/05/11/more-better-harder-zippy-cache-controller-in-asp-net-mvc/

我同意Justin的观点(并且喜欢SquishIt)。你可能最好创建更少,更大的捆绑包。