問題タブ [squishit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - SquishIt 対 MVC 4.0 バンドラー
私は ASP.NET MVC アプリケーションを持っており、現在 SquishIt を使用して、すべての CSS ファイルと JavaScript ファイルを、サイトへのヒットごとに Web サーバーからダウンロードした単一の要素にバンドルしています。最近、 MVC が独自の bundler を導入したことを知っています。2つを比較した人はいますか?特定の状況では、一方が他方よりも優れていますか? それとも基本的に同じですか?MVC バンドラーを使用する場合、IIS は引き続きサイト ディレクトリへの書き込みアクセスを必要としますか?
あらゆるご意見やご感想をお待ちしております。
ありがとう。
iis-7.5 - 静的圧縮が有効になっている場合、IIS の gzip js が圧縮されない
Squishit を使用して JS を縮小およびバンドルし、バンドルされたファイルを圧縮しました IIS 7.5 でオプション (静的コンテンツ圧縮を有効にする) を有効にしました
問題は、Js が圧縮されず、縮小された js を取得するだけですが、動的コンテンツの圧縮を有効にすると、Js が圧縮されます。
現在、動的圧縮の問題は、ファイルをキャッシュせず、リクエストごとに CPU の時間がかかる圧縮を実行する必要があることです。
jsが静的コンテンツ圧縮モードで圧縮されない理由を誰かが教えてくれますか
これは、クライアント側でjsを送信する理想的な方法ですか
javascript - SquishItはグローバル変数と関数をどのように処理しますか
squishItをページごとに使用するのか、プロジェクト内のすべてのJSで1つの結合ファイルを使用するのかわかりません。jsファイル内のいくつかのグローバル変数が互いにクラッシュするのではないかと少し心配しています。squishItはこれに対処しますか?
グローバル変数があってはならないことを私は知っています。しかし、プロジェクトを構築するのは私ではないので、ここでは多くのJSとグローバル変数を使用しています。
関数についてもまったく同じ質問です。異なるJSファイルに同じ名前の関数があり、それらを1つに結合するとどうなりますか?
.ForeRelease()は、web.configでデバッグをfalseに変更せずに機能させることを目的としていますか?
.net - 静的アセット、CDN、およびマルチサーバー環境での 404 問題
実稼働環境で問題が発生しました。他の誰かがこの問題に遭遇し、スマートな解決策を持っている可能性があります。
前提条件:
- 2 つのフロント エンド サーバーの前にロード バランサーを使用します。
- CSS/JS/画像などの静的アセットの配信には CDN を使用します。
- SquishIt を使用してチェックサムで JS/CSS ファイルのフィンガープリントを作成し、キャッシュ バスティングを提供します。
- アプリケーションの開始時にアセット パスの先頭に CDN パスを追加します。これも SquishIt 機能 (.WithOutputBaseHref) です。例:
/ui/main_465987ecb75.css
のようにレンダリングされます//cdn.host.com/ui/main_465987ecb75.css
展開ルーチン:
- server1 をロード バランサーから外します。
- server1 にデプロイします。
- 温めます。
- サーバー 1 をロード バランサーに含めます。
- server2 をロード バランサーから外します (...そして手順 2 ~ 4 を繰り返します)
そして、ここで失敗します:
上記のステップ 4 と 5 の間で、両方のサーバーを短時間オンラインにします。この間、server1 は main_46eb48ac968.css を参照し、server2 は main_987eba4687.css を参照している可能性があります。これにより、次のシナリオで問題が発生します...
使用事例:
- ユーザーがサイトにアクセスし、新しく展開されたサーバー 1 に到達します。
- ブラウザーは、CDN から main_46eb48ac968.css を要求します。
- そのファイルはキャッシュにないため、CDN はロードバランサーからそのファイルを要求します。
- ロード バランサーは、CDN 要求を server2 に送信します。
- 新しいファイルはサーバー 1 にのみあるため、サーバー 2 は 404 ページが見つからないというエラーを返します。
- サイトががらくたのように見えます!
もちろん、簡単な修正は、デプロイ中に CDN なしで実行することですが、アプリケーションの起動時に CDN URL がパスの前に追加されるため、本番環境でアプリケーションを再起動する必要があります... :/
アイデア?
asp.net-mvc - SquishIt に強制的に縮小ファイルを更新/再作成させる
SquishIt をウェブアプリに統合しようとしています。ローカルでのテストから気付いたのは、SquishIt がファイルを 1 回だけ生成することです。他のSOの回答に基づいて、SquishItコードを読んで、HttpCacheに生成されたハッシュキーの値が含まれていない場合にファイルが生成されることがわかりました。
アプリを再起動せずに、または HttpCache をクリアせずに、生成された縮小ファイルを削除すると、SquishIt はファイルを再作成しません。
ファイルが存在しない場合、SquishIt に強制的にファイルを再作成させる方法はありますか?
前に RequestReduce を使用していましたが、css/js ファイルのみが編集された場合 (つまり、web.config が編集されておらず、アプリが再起動されていない場合)、css/js の変更を常に反映するとは限らないことに気付きました。変更が確実に反映されるように、デプロイ時に生成されたすべてのファイルを常に削除します。
web.config が変更されていなくても、SquishIt は常に変更されたコードを検出し、アプリは再起動されず、HttpCache はクリアされませんか?
[BundleCache.Add] ( https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/BundleCache.cs#L40-54 ) メソッドのコードは、この質問に答えるのに役立ちます
生成されたファイルを削除するだけで、強制的に SquishIt を生成されたファイルにすることはできますか?
対処する必要があるシナリオについて考えた後、これは間違った質問です。
編集:
- これらの生成されたファイルのクライアントに送信されるキャッシュ ヘッダーは何ですか?
私のシナリオは次のとおりです。デフォルトの JS ミニファイアーから JsMinMinifier に切り替えました。ファイルを削除 (RenderOnlyIfOutputFileIsMissing
が設定されている) し、アプリを再起動すると、縮小されたファイルが生成されました。ただし、それらは以前のファイルと同じ名前でした (別の名前であると誤って想定していました)。
ブラウザを更新すると、新しく生成されたファイルがサーバーによって送信されたことが示されました。どうしてそうなった?資産に長い有効期限のキャッシュ ヘッダーが設定されている場合、ブラウザーはサーバーから新しいファイルを要求するべきではありません。(Firebug でアセットを調べたところ、キャッシュ ポリシーを理解できませんでした。私には、数分間キャッシュするように設定されているように見えます)。
編集2:
私の結論は、生成されたファイルを削除して再生成する必要はないということです。対応するソース ファイルが変更された場合、SquishIt は適切なファイルを生成します。
css - SquishIt (動的 LESS コンテンツをサポート) を使用して別の less ファイルで変数を参照しますか?
MVC4 のプロジェクトにブートストラップを使用しています。これまでのところ、メイン レイアウト ページで bootstrap.less ファイルを参照していましたが、うまくいきました。ただし、各部門ページの外観をカスタマイズする必要があるという新しい要件が発生しました (各部門には、メイン レイアウトを使用する独自のレイアウトがあります)。
bootstrap.less には次の構造があります。
@import variables.less // すべての変数を定義します
@import その他 // mixins.less、reset.less などのすべてのインポート
変数オーバーライドを挿入する必要があるため、別の少ないファイルを作成しました。
bootstrap-without-variables.less //bootstrap.less からの variables.less を除いたすべてのインポートを含む
この分離の理由は、変数オーバーライドを挿入して、ページのブートストラップ スタイルをカスタマイズできるようにするためです。
SquishItを使用して、より少ないファイルをバンドルにまとめています。
バンドルは次のとおりです。
これはまったく機能しません。variables.less を削除して、bootstrap-without-variables.less (現在は bootstrap.less に似ています) でそれを参照すると、完全に正常に動作します。
問題は、各ファイルが個別に評価され、css に変換されてから結合されることだと思います。
最初にファイルを 1 つにバンドルしてから評価して css に変換するか、この問題に対するより良い解決策をバンドラーに指示する方法はありますか?
javascript - body要素の最後にsquishitを使用して外部のminifiedjsをレンダリングする
アプリケーションにマスターページと子ページがあります。実行時に、js と css をマスター ページの pre-init メソッドに含めることを決定し、squish it (bundlecss.AsCached & bundlecss.Render) メソッドを使用して js と css をレンダリングします。マスター ページのヘッド コントロールでは、ファイルは Bundle.Css().RenderNamed メソッドを使用してインクルードされます。
私の要件は、body 要素の最後に外部 js ファイルを含めて、Web ページのレンダリングを高速化することです。body要素の最後にBundle.Css().RenderNamedを呼び出したところ、jsファイルがページに含まれていません。
squish フレームワークを使用する場合、縮小された js をページ html に含める場所を指定することはできませんか?
前もって感謝します。ブラマイア
less - Squishit.Less は何もしません
パッケージ マネージャーを使用して Squishit.Less 0.9.3 をインストールしました。2 つのファイルがあります。
- style.less -
@import "test.less";
- test.less -
body{background-color: pink;}
.
私のページには次のものがあります。
しかし、私が得る出力は次@import"test.less";
のとおりです。
試してみましProcessImports
たが、違いはありませんでした。