YuiCompressor を使用して独自の JS を圧縮していますが、MicrosoftAjax.js が縮小されない理由はありますか? または、圧縮バージョンを実行するという設定があります(圧縮バージョンがある場合)。または、それを逆コンパイルして、スクリプト リソースを自分で縮小する必要がありますか?
6 に答える
私はこれらの誤解を招くような答えに驚いています。
ASP.NET AJAX は常に、MicrosoftAjax.js のデバッグ バージョンと圧縮バージョンの両方を提供してきました。web.config のデバッグ設定とScriptManager の ScriptMode プロパティを組み合わせて、参照するスクリプトを制御します。
さらに、 「retail」設定を使用して、圧縮されたスクリプトを強制することもできます。
System.Web.Extensions のすべてのスクリプトは縮小されています。Dave Ward の優れた回答が指摘しているように、それぞれに 2 つのバージョンがあります。デフォルトでは、web.config がデバッグ モードの場合、ScriptManager はデバッグ バージョンを使用します。リテール設定または debug="false" でリリースするように反転し、スクリプトを確認します。
また、WebResourceHandler または ScriptResourceHandler を介して提供されるスクリプトは、実際にはキャッシュされます。それらは可能な限り最善の方法で永久にキャッシュされるため、将来のアクセスで 301 する必要さえありません。暗号化されたデータが含まれているため、クエリ文字列はそのままです。これは、アセンブリ名などのスクリプト リソースに関する情報が含まれているため、またキャッシュ フラッディング攻撃を防ぐため、暗号化されています。
ここで担当者を探すのではなく、詳細を伝えたかっただけです。
http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspxを参照してください。
enableScriptMinification="true"
オプションを選択し、MicrosoftAjax.jsをリストに追加します
どちらがいいですか:
- MicrosoftAjax.js は圧縮され、難読化されています。
- MicrosoftAjax.js は圧縮されておらず、開いているため、自分で読んで理解することができます。
編集: 私の弁護では、この回答を書いている時点で、私は.NET 3.5の経験がありませんでした。私は今、彼らがこの分野で切望されていたいくつかの改善を行ったことに気づきました.
明らかに、MS は JavaScript ファイルのサイズが非常に重要であるとは考えていません (これは正気ではありません)。さらに、MS Ajax での私の経験に基づいて、いくつかの SCRIPT タグ (場合によっては 10 以上) をマークアップに挿入します。これらのタグは、WebResource.axd ハンドラーからスクリプトを取り込みます。そのため、ページを実行するために必要な Javascript を取得するためだけに、10 以上のリクエストを行う必要があります。さらにばかげたことに、彼らはクレイジーなクエリ文字列をハンドラー URL に追加します。これにより、おそらくスクリプトがブラウザーによってキャッシュされなくなります。
この狂気は、私が MS Ajax を完全に捨てて、はるかに優れたライブラリである jQuery に切り替える十分な理由でした。
理解を容易にするためにそのまま残されているとしか思えません。すでにほのめかしたように、自分で圧縮できない理由はわかっています。結局のところ、それはJavaScriptだけです-MSはあなたにそうするように勧めているかもしれませんがそうでなければ信じてください、彼らはそれを魔法のピクシーダストで振りかけて、それを違うものにすることはしません!:)
[それに直面しましょう。MS はコードのサイズを恐れたことはありませんよね?]