空白と圧縮の詳細は、次の項を参照してください。
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に含まれています。