ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

46 空白と圧縮

WebCenter Sitesでテキスト・ページがストリームされると、かなりの量の空白(スペース、改行およびタブ)がページに含まれることがあります。この空白は、クライアントで消費されたデータには影響しません。ソース・コードがコンシューマに表示されるときに空白が可視状態になりますが、これは望ましくありません。さらに、過剰な空白はレスポンスのサイズを不必要に増加し、これが最終的に帯域幅の使用を増加します。したがって、可能なかぎり空白を削除することが効果的です。

この章には次の項が含まれます。

46.1 空白とJSP

JSP仕様では、すべての空白を保持する必要があります。したがって次のようなページの場合

<%@ page import="my class name"%> 
<%@ page import="my class 2"%> 
<cs:ftcs> 
<p>Hello world!</p> 
</cs:ftcs>

JSPの解析後、3行目にテキストが表示されるため、改行が3つと<p>の前のタブが1つあります。さらに複雑なページでは、問題は複雑になります。

46.2 空白とXML

WebCenter SitesのXML処理言語は、独自のXML対応タグのセットであり、JSPの空白保持ルールにこだわりません。このため、次のようなWebCenter Sites XMLページの場合

<? XML version 1.0 ?> 
<FTCS> 
<p>Hello World!</p> 
</FTCS>

<p>を出力の最初の文字として表示します。XML Parserはすべての空白を削除するためです(XMLデバッグが有効になっていて、すべての空白が保持されている場合を除く)。

46.3 圧縮

空白は十分に整えられたフォーマットでコードを記述するためのアーティファクトであるため、その存在は開発者にメリットをもたらすプログラミング・プラクティスの残念な副作用です。コンシューマとカスタマへの影響は、帯域幅を除いて最小です。帯域幅の問題を解消するために、すべてのテキストベースのページの出力を圧縮できます。出力の圧縮はサーバー側で実行され、解凍はコンシューマのユーザー・エージェント(ブラウザ)で実行されます。圧縮/解凍は、エンド・ユーザーには完全に透過的に実行されます。この種の圧縮は、帯域幅の使用量を最大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にお問い合せください。

46.4 JSPの設計

圧縮がオプションでない場合には、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に含まれています。