4

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

索引.aspx

<asp:Content ContentPlaceHolderID="CssFiles" runat="server">
    <% CssHelper.Add("home.css"); %>
</asp:Content>

站点主

<asp:ContentPlaceHolder ID="CssFiles" runat="server" />
<% CssHelper.Add("reset.css"); %>
<% CssHelper.Add("master.css"); %>
<%=CssHelper.Render() %>

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

我很好奇这是否成功以及如何成功。

4

2 回答 2

12

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

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

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

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

于 2010-08-04T19:10:02.553 回答
1

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

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

不过,我同意贾斯汀的观点(并且喜欢 SquishIt)。您最好创建更少、更大的捆绑包。

于 2010-08-05T20:14:05.943 回答