WebCenter Sitesでテキスト・ページがストリームされると、かなりの量の空白(スペース、改行およびタブ)がページに含まれることがあります。この空白は、クライアントで消費されたデータには影響しません。ソース・コードがコンシューマに表示されるときに空白が可視状態になります。さらに、過剰な空白はレスポンスのサイズを不必要に増加し、これが最終的に帯域幅の使用を増加します。そのため、可能なかぎり空白を削除することをお薦めします。
トピック:
JSP仕様では、空白を保持する必要があります。
したがって次のようなページの場合
<%@ page import="my class name"%> <%@ page import="my class 2"%> <cs:ftcs> <p>Hello world!</p> </cs:ftcs>
JSPの解析後、3行目にテキストが表示されるため、改行が3つと<p>
の前のタブが1つあります。さらに複雑なページでは、問題は複雑になります。
WebCenter SitesのXML処理言語は、独自のXML対応タグのセットであり、JSPの空白保持ルールにこだわりません。
このため、次のようなWebCenter Sites XMLページの場合
<? XML version 1.0 ?> <FTCS> <p>Hello World!</p> </FTCS>
出力の最初の文字として<p>
が表示されます。なぜなら、XMLパーサーによって空白がすべて取り除かれるからです。(例外は、XMLデバッグが有効である場合です。この場合、空白がすべて保持されます。)
空白は、正しく書式設定されたコードの記述のアーティファクトです。その存在は、開発者のためになるプログラミング手法の副作用です。コンシューマとカスタマへの影響は、帯域幅を除いて最小です。帯域幅の問題を解消するために、すべてのテキストベースのページの出力を圧縮できます。出力を圧縮するには、サーバー側にいる必要があります。コンシューマのユーザー・エージェント(ブラウザ)によって解凍が実行されます。
圧縮/解凍は、エンド・ユーザーには完全に透過的に実行されます。この種の圧縮は、帯域幅の使用量を最大80%削減できます。
一般に使用されている圧縮メカニズムの1つに、Apache Webサーバーのmod-gzip拡張機能があります。このモジュールは、ユーザー・エージェントで解凍可能であれば、ユーザー・エージェントに対するすべての出力を自動的にgzipします。構成は最小であり、その有効性は非常に高いです。これは、SourceForge (http://sourceforge.net/projects/mod-gzip/
)から取得できます。類似したツールを、IISなどのその他の一般的なWebサーバーで入手できます。
また、アプリケーション・サーバー・レイヤーでの圧縮を実行し、Webサーバーはそのままにしておくことも可能です。この操作を実行するには、標準サーブレット・フィルタをSatellite Server (またはSatellite Serverが使用されない場合にはWebCenter Sites)に接続します。このサーブレット・フィルタは、指定されたサーブレットの起動の前または後(またはその両方)に所定の順序で起動され、起動中に、mod-gzipの仕組みとまったく同じ方法で、出力を互換性のあるUser-Agentに送信する前に圧縮できます。このような圧縮フィルタは、SourceForge (http://sourceforge.net/projects/pjl-comp-filter/
)で検索できます。
圧縮に支援が必要な場合には、Oracleコンサルティング・サービスにお問い合せください。
圧縮がオプションでない場合には、空白が発生しない方法でJSPページを変更することを検討します。
これを実行するには、前述のコードを次のように変更します。
<%@ page import="my class name" %><%@ page import="my class 2" %><cs:ftcs><p>Hello world!</p></cs:ftcs>
これは簡潔ではありません(または読みやすくもありません)が、<p>
タグの前にいかなる空白も含まれていないページが出力されます。中間の解決策として、次のようなものが考えられます。
<%@ page import="my class name" %><%@ page import="my class 2" %><cs:ftcs> <p>Hello world!</p> </cs:ftcs>
JSPの空白問題の対処法に関する例の詳細は、ElementCatalogのWebServicesエレメントを参照してください。それらは、WebCenter Sitesに含まれています。