ページ分割

概要

携帯端末はキャリア、機種ごとにブラウザに表示できるコンテンツのサイズ(キャッシュサイズ)が異なります。
キャッシュサイズを超えたコンテンツを表示させようとするとエラーとなります。

x-Servlet は変換後のページサイズが機種情報(useragent.xml)に設定されている端末キャッシュサイズよりも大きい場合はページを分割して出力します。

キャッシュサイズについて

コンテンツを端末上で1ページとして表示するには、ページ内(htmlファイル内)で指定されているオブジェクトファイル(画像、FLASH など)も含めた全てのファイルサイズがキャッシュサイズに収まっている必要があります。

キャッシュサイズイメージ

キャッシュサイズイメージ

キャリアが公開しているキャッシュサイズは「トータルキャッシュサイズ」ですが、実際には「ルートドキュメントサイズのみで表示できる上限」が存在しています。
このため画像ファイルが小さくても html ファイルがルートドキュメントサイズを越えると表示できなくなります。

一般的にルートドキュメントサイズはトータルキャッシュサイズに比べて小さいサイズになります。

各キャリアによってキャッシュサイズ構成に違いがあり、以下のようになっています。

docomo au SoftBank EMOBILE WILLCOM スマートフォン
ルートドキュメントサイズ=トータルキャッシュサイズ ルートドキュメントサイズ上限が別途存在する。 ルートドキュメントサイズ上限が別途存在する。 ルートドキュメントサイズ=トータルキャッシュサイズ ルートドキュメントサイズ=トータルキャッシュサイズ ルートドキュメントサイズ=トータルキャッシュサイズ

キャリア別キャッシュサイズ(Version2.8.3 以前)

x-Servlet Version2.8.3 までではキャッシュサイズとしてルートドキュメントサイズを用いていました。

このサイズは実際に携帯端末を用いて表示することができるテキストファイルの最大値となっており、主なサイズは以下の通りです。

docomo au SoftBank EMOBILE WILLCOM
5KB~100KB 8KB~33KB 10KB~48KB 300KB 50KB~256KB

キャリア別キャッシュサイズ(Version2.9.0 以降)

x-Servlet Version2.9.0 以降では端末キャッシュサイズの判定方式を変更し、実際のブラウザ表示能力により近いキャッシュサイズでページ分割を行います。

コンテンツのルートドキュメントだけでなく、トータルキャッシュサイズも別に保持し、双方のサイズを見ながら変換するようになりました。

docomo au SoftBank EMOBILE WILLCOM スマートフォン
ルートドキュメントサイズ 5KB~100KB、500KB 8KB~33KB 10KB~48KB 300KB 50KB~256KB 1MB
トータルキャッシュサイズ 同上 8KB~130KB 10KB~300KB 同上 同上 5MB

設定

ページ分割に参照されるキャッシュサイズは端末ごとに useragent.xml の <ContentMaxBytes><ContentMaxBytesUpdate><PageObjectMaxBytes> に設定されています。

※ xproxy.properties の「separatePageType」の設定で Version2.8.3 以前の動作にすることもできます。

  • separatePageType=1のとき(Version2.8.x 以下と同様のページ分割を行う)
    ContentMaxBytes の値でページ分割を実行します。
    ContentMaxBytesUpdate、PageObjectMaxBytes は使用しません。
  • separatePageType=2のとき(ルートドキュメントサイズを考慮した分割を行う)
    元コンテンツのルートドキュメントサイズにより ContentMaxBytesUpdate、PageObjectMaxBytes いずれかを使用します。
    • 元コンテンツのルートドキュメントサイズ(テキストのみのサイズ)が ContentMaxBytesUpdate 以下の場合
      PageObjectMaxBytes(トータルキャッシュサイズ)にて分割を行います。
    • 元コンテンツのルートドキュメントサイズ(テキストのみのサイズ)が ContentMaxBytesUpdate より大きい場合
      ContentMaxBytesUpdate(ルートドキュメントキャッシュサイズ)にて分割を行います。

※ contentsRule.xml の <Attribute name="noSeparate"> を "true" に設定することによりページ分割処理を行わないようにすることができます。
出力された結果によってはサイズオーバーで端末に表示されない場合があります。

※ <x:separate> タグを使用することで分割地点を若干ずらすことも可能です。詳しくはこちらをご覧ください。

動作

以下に動作例を示します。

テキスト(html)ファイル:7KB、画像ファイル(jpg 12個、gif 1個):40KB のコンテンツを変換した例

分割なし(docomo L-01B) 分割あり(au W21H)
キャッシュサイズが 100KB なので1ページに収まって表示されます。 キャッシュサイズが 32.9KB なので分割されます。

注意点

  • ページが分割される場所は変換後のファイルサイズに依存するのでページのデザインによってはレイアウトが崩れる場合があります。
    分割地点を指定することはできませんので、レイアウトを重視する場合はあらかじめ小さいページサイズでコンテンツをご用意ください。
  • Version2.9.0以降でキャッシュサイズの最適化に伴い、旧バージョンで分割されていたページが1ページで表示される・ページ分割数が減少するなどの違いが起こります。
    access.log に記録されるリクエスト数も減少しますので access.log の件数でアクセス解析を行っている場合はアクセス数が減少したように見えます。
  • au の端末ではキャッシュサイズ以外にブラウザ上で表示できるエリアが縦20,000ドットという制限がありますが、x-Servlet では考慮していません。
TOP