4

SquishItを実装してビュー ページ全体に Css/J をバンドルし、マスター ページでレンダリングするにはどうすればよいですか? Render 部分の上で 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() %>

私の現在の解決策は、HttpContext.Current.Items に BundleBuilder を保持する SquishIt の静的 Bundle クラスの静的ラッパーです。

これが成功したかどうか、またどのように成功したかを知りたいです。

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/

私はジャスティンに同意します(そしてそれがそのままLOVE SquishIt)。おそらく、より少ない、より大きなバンドルを作成する方が良いでしょう。

于 2010-08-05T20:14:05.943 に答える