6

Squishit が実稼働モードでバンドルを再構築する原因/トリガーを誰か教えてもらえますか?

たとえば、次のバンドルを作成すると、ファイル 'Site.Master_{GUID}.css' が期待どおりに作成されます。

<%= Bundle.Css()
   .Add("~/css/reset.css")
   .Add("~/css/typography.css")
   .Add("~/css/styles.css")
   .Add("~/MasterPages/Site.Master.css")
   .Render("~/Cache/Site.Master_#.css")
%>

しかし、ファイル バンドル ファイルを削除すると、再作成されません。試行錯誤の結果、web.config ファイルを次のように変更すると、

<compilation debug="true" targetFramework="4.0" />

そして、falseに戻ります

<compilation debug="false" targetFramework="4.0" />

次回ページがリクエストされたときにバンドルが再構築されますが、知りたいのは次のとおりです。

a) Squishit が特定のバンドルをビルドまたは再ビルドする必要があるかどうかを決定する方法

b) Squishit をリセットしてすべてのバンドルを再構築する認識された方法がある場合 - たとえば、キャッシュの消去またはサイトの更新の後。

ありがとう。

4

1 に答える 1

8

SquishItは、特定のバンドルをビルドするか再ビルドするかを実際には決定しません。バンドルがSquishItのキャッシュに存在する場合、ファイルはまだ存在していると見なされます。バンドルキャッシュにアクセスするたびにファイルシステムをチェックするのは非常にコストがかかるため、これは仕様によるものです。

バンドルはHttpRuntime.Cacheにキャッシュされるため、キャッシュから関連アイテムをクリアすることで強制的に再構築できます。追加されたすべてのアイテムに接頭辞「squishit_」が使用され、その後、「css」または「js」を使用してアセットタイプを表すことができます。キャッシュをクリアするものはすべて、サイトのリセット(web.configの変更によって開始される)を含め、バンドルが再構築される結果になるはずです。実行時にこれを制御するバックドアの方法が必要な場合は、このようなものをニーズに合わせて変更できます。

バンドルが再構築されるもう1つの原因は、そのコンテンツに含まれているファイルの1つへの変更です。これは、バンドルが最初にキャッシュに追加されるときにCacheDependencyを介して制御されます。

于 2013-01-09T16:40:37.293 に答える