以前、
Wicket でも
Htmlcompressor · wicketstuff/core Wiki
と
前提
- Wicket version 7.6.0です。
<dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>7.6.0</version> </dependency>
参考
django で
html を 圧縮する
mezzanine django-htmlmin を使ってhtmlを 圧縮する | Monotalk PageSpeed Insights の
リソース圧縮の 説明
リソース(HTML、CSS、 JavaScript)を 圧縮する | PageSpeed Insights | Google Developers HTML圧縮に
対しての 記事
HTMLは圧縮(compressやminify)すべきか | mtdew2 htmlcompressor の
紹介
サイズが大きくなりがちなHTMLソースを コンパクトに ·htmlcompressor MOONGIFT
WicketStuff の HTML Compresor を 使う
WicketStuffの
以下、
pom.xml に dependency を 追加する
<!-- https://mvnrepository.com/artifact/org.wicketstuff/wicketstuff-htmlcompressor --> <dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-htmlcompressor</artifactId> <version>7.6.0</version> </dependency>
Application クラス内で、 HtmlCompressingMarkupFactory を 設定する
getMarkupSettings().setMarkupFactory(new HtmlCompressingMarkupFactory());
表示される HTML
圧縮前、
改行、
- 圧縮前
<a class="btn btn-default btn-block" wicket:id="festivalLink" href="./festivals/340;jsessionid=node11ulekm8c1r1rv11yflsuplsery.node1"> <span wicket:id="festivalName">BOUNCE UP -3rd Anniversary-</span> </a>
- 圧縮後
<a class="btn btn-default btn-block" wicket:id="festivalLink" href="./festivals/340;jsessionid=node11ulekm8c1r1rv11yflsuplsery.node1"> <span wicket:id="festivalName">BOUNCE UP -3rd Anniversary-</span></a>
Compresorの 設定を カスタマイズして 使用する
HtmlCompressingMarkupFactory 内では、com.googlecode.htmlcompressor.compressor.HtmlCompressor
を
コンストラクタ内の
public HtmlCompressingMarkupFactory(HtmlCompressor compressor) { if(compressor == null) { compressor = new HtmlCompressor(); compressor.setRemoveIntertagSpaces(true); compressor.setRemoveSurroundingSpaces("html,head,body,br,p"); } this.compressor = compressor; }
HtmlCompressingMarkupFactory の
以下の
pom.xml に、 HtmlCompressor の dependency を 追加
アプリケーションのcom.googlecode.htmlcompressor
の
<!-- https://mvnrepository.com/artifact/com.googlecode.htmlcompressor/htmlcompressor --> <dependency> <groupId>com.googlecode.htmlcompressor</groupId> <artifactId>htmlcompressor</artifactId> <version>1.5.2</version> </dependency> <!-- https://mvnrepository.com/artifact/com.yahoo.platform.yui/yuicompressor --> <dependency> <groupId>com.yahoo.platform.yui</groupId> <artifactId>yuicompressor</artifactId> <version>2.4.8</version> </dependency>
アプリケーション内で、 HtmlCompressorの インスタンスを 生成する
WhiteTrashLord/htmlcompressor: HTML Compressor and Minifier, Backup of code.google.com/p/htmlcompressor
を
getMarkupSettings().setMarkupFactory(new HtmlCompressingMarkupFactory(newHtmlCompressor));
- newHtmlCompressor メソッド
private HtmlCompressor newHtmlCompressor() { HtmlCompressor compressor = new HtmlCompressor(); // 圧縮を実行する(true)、しない (false) デフォルト true compressor.setEnabled(true); // コメントを除去する(true)、しない(false) デフォルト true compressor.setRemoveComments(true); // 複数スペースを削除する(true)、しない(false) デフォルト true compressor.setRemoveMultiSpaces(true); // タグ間のスペースを削除する(true)、しない(false) compressor.setRemoveIntertagSpaces(true); // タグの不要な引用符を削除する 削除する(true)、しない(false) デフォルト false compressor.setRemoveQuotes(true); // DOCUMENTタイプをシンプルにする(true)、しない(false) デフォルト false // <!DOCTYPE html> に変換されます compressor.setSimpleDoctype(false); // ------------------------ // script タグから、オプション属性を削除します 削除する true 削除しない false デフォルト false // protected static final Pattern jsTypeAttrPattern = Pattern.compile("(<script[^>]*)type\\s*=\\s*([\"\']*)(?:text|application)/javascript\\2([^>]*>)", 34); // protected static final Pattern jsLangAttrPattern = Pattern.compile("(<script[^>]*)language\\s*=\\s*([\"\']*)javascript\\2([^>]*>)", 34); // --------- compressor.setRemoveScriptAttributes(false); // style タグからオプション属性を削除します。 削除する true 削除しない false デフォルト false // protected static final Pattern styleTypeAttrPattern = Pattern.compile("(<style[^>]*)type\\s*=\\s*([\"\']*)text/style\\2([^>]*>)", 34); compressor.setRemoveStyleAttributes(false); // link タグからオプション属性を削除します。 削除する true 削除しない false デフォルト false // protected static final Pattern linkTypeAttrPattern = Pattern.compile("(<link[^>]*)type\\s*=\\s*([\"\']*)text/(?:css|plain)\\2([^>]*>)", 34); // protected static final Pattern linkRelAttrPattern = Pattern.compile("<link(?:[^>]*)rel\\s*=\\s*([\"\']*)(?:alternate\\s+)?stylesheet\\1(?:[^>]*)>", 34); compressor.setRemoveLinkAttributes(false); // Form タグからオプション属性を削除します。 削除する true 削除しない false デフォルト false // protected static final Pattern formMethodAttrPattern = Pattern.compile("(<form[^>]*)method\\s*=\\s*([\"\']*)get\\2([^>]*>)", 34); compressor.setRemoveFormAttributes(false); // Input タグからオプション属性を削除します。 削除する true 削除しない false デフォルト false // protected static final Pattern inputTypeAttrPattern = Pattern.compile("(<input[^>]*)type\\s*=\\s*([\"\']*)text\\2([^>]*>)", 34); compressor.setRemoveInputAttributes(false); // Boolean 値を 属性から削除します。削除する true 削除しない false デフォルト false // protected static final Pattern booleanAttrPattern = Pattern.compile("(<\\w+[^>]*)(checked|selected|disabled|readonly)\\s*=\\s*([\"\']*)\\w*\\3([^>]*>)", 34); compressor.setSimpleBooleanAttributes(false); // インライン イベントハンドラから "javscript:"の記述を削除します。削除する true 削除しない false デフォルト false compressor.setRemoveJavaScriptProtocol(false); // link タグなどの"http://" 記述を "//"に置換します。 compressor.setRemoveHttpProtocol(false); // link タグなどの"https://" 記述を "//"に置換します。 compressor.setRemoveHttpsProtocol(true); // 改行を除去しない 除去しない true 除去する false デフォルト false compressor.setPreserveLineBreaks(false); // 周囲のスペースを削除するタグ カンマ区切りで設定する デフォルト Null compressor.setRemoveSurroundingSpaces(HtmlCompressor.BLOCK_TAGS_MAX); // インラインcss を圧縮する 圧縮する true 圧縮しない false デフォルト false compressor.setCompressCss(true); // YUI cssコンプレッサーの改行を入れる文字数 -1 で改行しない compressor.setYuiCssLineBreak(-1); // インラインJavascript を圧縮する 圧縮する true 圧縮しない false デフォルト false compressor.setCompressJavaScript(true); // Yahoo YUI Compressorのdisable-optimizations の設定 標準で実装されている最適化を無効するか パラメータ を設定するか 無効する true 無効にしない false compressor.setYuiJsDisableOptimizations(false); // YUI コンプレッサーの改行を入れる文字数 -1 で改行しない compressor.setYuiJsLineBreak(-1); // nomunge パラメータ (最小化のみで、難読化はしない) を 設定するか 設定する true 設定しない false デフォルト false compressor.setYuiJsNoMunge(false); // 不要なセミコロンを削除しないようにする 削除しない true 、 削除する false compressor.setYuiJsPreserveAllSemiColons(false);//--preserve-semi param for Yahoo YUI Compressor // --------------------------------------------------- // 独自のjs、css コンプレッサーを用いる場合は使用する // ---------------------------------- //use Google Closure Compiler for javascript compression // compressor.setJavaScriptCompressor(new ClosureJavaScriptCompressor(CompilationLevel.SIMPLE_OPTIMIZATIONS)); //use your own implementation of css comressor // compressor.setCssCompressor(new MyOwnCssCompressor()); return compressor; }
結構色々な
コメント