web-dev-qa-db-ja.com

ASP.NETアプリケーションのHTML出力を最小化する

Asp.netアプリケーションから送信されるHTML応答のサイズを小さくする方法は何ですか?

私が所有していないコントロールを使用していますが、空白を含む出力が生成されます。タイミングを改善するためにGoogleが行うようにページのHTML出力全体を縮小することに興味があります(ソースを表示www.google.com)。

私のためにこれを行うことができるASP.NETで利用可能なユーティリティクラスはありますか?

35
Ramesh

実行時にそれを行う必要はありません。コンパイル時に行うことができるからです。

詳細: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html

33
thorn̈

ここで説明されているようにHTTPモジュールを試してください: http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-2

20
gius

Microsoft .NETプラットフォームの場合、HTMLコードの縮小を生成する WebMarkupMin と呼ばれるライブラリがあります。各ASP.NETフレームワークには独自のモジュールがあります。

  • ASP.NET Core- WebMarkupMin.Web 。 HTTPモジュールとして実装されているため、どのフレームワークでも使用できます。 ASP.NET Webページフレームワーク(Razor)での使用に適しています。
  • ASP.NET MVC- WebMarkupMin.Mvc
  • ASP.NET Webフォーム- WebMarkupMin.WebForms

ドキュメントは- http://webmarkupmin.codeplex.com/documentation で入手できます。

10
Andrey Taritsyn

Thornの提案についてコメントしたい(ただし、スタックオーバーフローは初めてです)。

  1. リンクされたコード(omari-o.blogspot.com)はMVC4をサポートしていません。コードはオープンソースですが、MVC3とMVC4間のブレーキングの変更のため、簡単にアップグレードできません。

  2. 実行時にhttp結果に空白が書き込まれる可能性がありますが、実際のサイトの開発者だけがそれを知ることができます。したがって、テンプレートファイル(aspx)の静的な縮小化は、絶対に簡単ではありません。 giusによって提案されている動的な縮小は、空白が正しく削除されることを保証するために使用する必要があります。残念ながら、これによりランタイムの計算コストが発生します。コード動的にが出力にスペースを書き込む場合は、削除する必要があります動的に

6
Some dude

受け入れられた回答はMVC 4では機能しないため、ビルド時に縮小する同様のライブラリを以下に示します https://github.com/jitbit/HtmlOptimizerMvc4

3
Alex

ここに表示されていない別のオプションを追加するだけです。これは、私が使用を推奨されたものです。

HTML minifierコマンドラインツール

使用法: ここ および ここ

issueがありますが、このツールでは、1行(//)のコメントが残り、Razor解析で問題が発生します。次のようにC#ブロック内に配置された行コメント:

@{
  ... 
  ...
  // anything
  ...
}

この時点以降、行の縮小出力の残りがRazorパーサーによって無視されるため、ブロックの終了 "}"が見つからなかったことを示すエラーが発生します。

この問題の私の回避策は、出力からこれらのコメントを完全に削除することでした。 このように動作します。これを行うには、行145からRegexOptions.SingleLineを削除します。

htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);
2
Veverke