プロが教える店舗&オフィスのセキュリティ対策術

ウェブアプリケーションのトップページ等にポートレットを設置する場合、
各ポートレットの中身の記述にはIFRAMEを使う方法と直接HTMLを記述する方法があると思います。

この2種類の方法、それぞれメリットとデメリットがあるのでしょうか。
それと、何となく世の中でIFRAMEが避けられている印象があるのですが
何か実用上の理由があるのでしょうか(漠然とした印象なので気のせいかも)
個人的にはIFRAMEの方が親ページとポートレットの中身の明確な分離ができて良いと思うのですが。

皆さんならどちらを使いますか?
そしてその理由は何でしょうか?

A 回答 (4件)

ポートレートと勘違いしていました。

すみません。

「ポートレット」はサーバー側で処理し、
パーツ(ポートレット)を組み立てて1つのHTMLドキュメント全体を生成する、その一過程となると思いますから、
1つのHTMLファイルに埋め込む方がいいと思います。
そうしないと、フレームの数だけリクエストが増え、サーバーの負荷も増えると思います。


リクエスト開始

<head>タグ出力
<body>タグ、およびヘッダ出力
<div>ポートレット</div> ← ポートレット取得
<div>ポートレット</div> ← ポートレット取得
<div>ポートレット</div> ← ポートレット取得

クライアントへ

-----フレームにした場合

リクエスト開始

<head>タグ出力
<body>タグ、およびヘッダ出力
<iframe 1>タグ出力
<iframe 2>タグ出力
<iframe 3>タグ出力

クライアントへ

・<iframe 1>より

リクエスト開始

<head>出力
<body>、およびヘッダ出力
<div>ポートレット</div> ← ポートレット取得

クライアントへ

・<iframe 2>より

リクエスト開始

<head>出力
<body>、およびヘッダ出力
<div>ポートレット</div> ← ポートレット取得

クライアントへ

・<iframe 3>より

リクエスト開始

<head>出力
<body>、およびヘッダ出力
<div>ポートレット</div> ← ポートレット取得

クライアントへ
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かにリクエスト数の問題は無視するわけにいかないですね。
#SPDYが速く普及しないかなぁ・・・

お礼日時:2012/02/28 08:54

>もし良ければフレームを使った方が良いケースを教えて頂けると嬉しいです。



使った方が「良い」かどうかはわかりません。
No.2に書いた通り、ファイルを個別に管理できるメリットがありますから、
CGI系が使えないときで、ファイルを個別に管理したいときに使用しています。

また、専用のCGI(ニュースCGI、RSS表示CGIなど)などを既存ページに入れることができない、しにくい時など(CGIアプリの改変ができない、禁止されているなど)も、
<iframe>などでCGIを個別に呼び出した方が作りやすくなります。

SSIとCGIを併用することで既存ページに入れることは可能な場合もありますが、<head>などの重複出力などの問題も出てきます。


No.1参考サイトのフレームの問題にも上げられている通り、デメリットは多いですから、
(問題に対応するための作り方というのはありますが、煩雑になりやすい。)
可能ならフレームを使わない方がいいと思います。
オーサリングソフトを使えるなら、
Dreamweaverならライブラリやテンプレートを使用することで、CMSと同じ処理をオーサリングソフトに行わせることが可能ですから、フレームを使う必要はなくなります。
    • good
    • 0

ポートレートだけを更新したい場合、フレームを使用していればポートレートだけ更新すればいいですが、


フレームのないページに埋め込んでいる場合、そのページからポートレートの部分を探し出して更新する必要があります。

CMSでは、そういう作業(ファイルのどの部分にポートレートが書かれているかを探す)はすべてCMSが行ってくれますから、
更新作業の手間を省くことができます。

>個人的にはIFRAMEの方が親ページとポートレットの中身の明確な分離ができて良いと思うのですが。
本来のフレームの目的はその通りですが、
CMSが一般化して、個別に管理する必要がなくなったから、フレームも使われなくなりました。

>皆さんならどちらを使いますか?
状況次第ですね。
フレームを使う必要がなければ使いませんし、使う方が良ければ使います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

> CMSが一般化して、個別に管理する必要がなくなったから、フレームも使われなくなりました。
つまり、デフォルトはフレーム不使用なんですね。
もし良ければフレームを使った方が良いケースを教えて頂けると嬉しいです。

お礼日時:2012/02/27 19:33

まずiframeは、HTML4.01strict・XHTML1.0strict、XHTML1.1では使えません。

HTML4.01frameset・HTML4.01strictでは使えます。
 そして、
【引用】____________ここから
著者
 ・・・【中略】・・・
 HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[4 適合条件: 必須事項と推奨事項( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

 これが一番の根拠でしょう。
 iframeに限らず、frameには多くの問題を抱えています。
★frame 問題 html - Google 検索 ( http://www.google.co.jp/#sclient=psy-ab&hl=ja&sa … )
 これが実用的な面での問題点です。

 基本的にiframeは使いません。

>個人的にはIFRAMEの方が親ページとポートレットの中身の明確な分離ができて良いと思うのですが。
 これは、HTMLをきちんと文書構造にしたがってマークアップすれば済みます。

<div class="section">
 <h2>本文見出し</h2>
 <p>段落</p>
 <div class="article">
  <div class="header">
   ・・・ヘッダ・・・
  </div>
  <div class="section">
   ・・・本文・・・
  </div>
  <div class="footer">
  </div>
 </div>
</div>
HTML5だと
<section>
 <h2>本文見出し</h2>
 <p>段落</p>
 <article>
  <header>
   ・・・ヘッダ・・・
  </header>
  <section>
   ・・・本文・・・
  </section>
  <footer>
  </footer>
 </article>
</section>
になります。
 ここで例示したclass名については、

HTML4.01仕様書
【引用】____________ここから
DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[The global structure of an HTML document (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

★HTML5 における HTML4 からの変更点/新しい要素 ( http://standards.mitsue.co.jp/resources/w3c/TR/h … )の要素名とその意味を参考にしています。
    • good
    • 0
この回答へのお礼

ありがとうございます。
一番にくるのはやはり、非推奨要素であるという一種の思想的な問題ですよね。

実用面については、作成するウェブアプリケーションの性格上・・・
・プリントアウトすることは無い
・ページではなくポートレットでの使用なのでブックマークとは関係なし
・公開サービスではないので検索エンジンとは関係なし
・サポートするブラウザは制限して販売しているので非対応ブラウザは関係なし

ということで、私が調べた限りでは実用上の問題が見つかりませんでした。
どれも、ウェブアプリケーションのポートレットとして使うIFRAME、
という観点では関係無さそうです。

お礼日時:2012/02/27 19:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!