2010-07-02 62 views
4

如何实现SquishIt以跨查看页面捆绑Css/Js并将其渲染到母版页中?我以为我可以在渲染部分上面使用ContentPlaceHolder,但似乎有些奇怪的行为,有时会添加3个文件(1个在视图页面,2个在主页面),但其他时间会忽略从视图添加的文件页。在母版页和查看页面中使用SquishIt合并CSS和JS

的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的静态包类的静态包装,保持BundleBuilder在HttpContext.Current.Items 。

我很好奇,如果这已成功完成,如何如此。

回答

12

我想你可能会错过捆绑CSS和JavaScript的一点点。如果您打算在每个视图中添加css或js文件,并结合主页面文件,那么您将创建大量用户必须下载的小捆。

如果你没有ton(我的意思是一个TON)Javascript和Css,那么你最好把你所有的CSS和javascript捆绑到同一个包中。这样用户就可以第一次下载它,然后获得缓存。

如果你有一个TON的CSS和JavaScript,然后使用命名捆绑功能,并为您的网站的不同部分创建捆绑。但总的来说,您希望最小化您创建的捆绑包的数量,以便用户不必继续下载文件。

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

+2

有很多JS和CSS,看起来像“命名包”是我们想要去的方式。网站的不同区域共享很多相同的CSS(帐户,结帐等)。这些不需要全部捆绑成一个,但可以在更多模块化捆绑中工作。谢谢! – 2010-10-01 14:17:46

+0

谢谢你。我几乎陷入了这个错误。 – Neothor 2011-03-16 15:25:21