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 Parserはすべての空白を削除するためです(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 Consulting Servicesにお問い合せください。
圧縮がオプションでない場合には、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に含まれています。