2009-07-25 8 views
0

webbアプリケーションで画像を呼び出すには、次の2つの方法があります。同じ意味を持って使用するのが最適か、その両方になりますウェブアプリで使用するのに最適なパスの種類は?

<img src="/myapp/img/world.gif" /> 

OR

<img src="http://www.example.com/myapp/img/world.gif" /> 

。両方が同じ意味を持たない場合、なぜですか?私のアプリケーションで2番目のメソッドを使用してすべてのファイル(画像、swf、flvなど)を呼び出すと、パフォーマンス上の制約があります。

答えて

6

一般的に言えば、最初の方法は、アプリケーションの一部であるリソースを参照するのに適した方法です。相対URI参照と呼ばれ、すべてのリンクを変更せずにアプリケーションを別のドメイン名に転送することができます。

あなたも上記のHTMLがhttp://www.example.com/myapp/main.html

のようないくつかの場所で、あなたはまた、/ myappのパスに縛られていない、そのように表示されていることを想定し...な

<img src="img/world.gif" /> 

として相対パスを使用して検討すること接頭辞を付けて、アプリケーションを/ superappに簡単に移動させることができます。

ほとんどのアプリケーションフレームワークとテンプレートシステムには、現在のアプリケーションのルートURIを報告する方法があります。このような場合には、あなたの特定のenvrionmentが持つ固有のものを交換/増設メカニズムに依存...

<img src="$(APPROOT)/img/world.gif" /> 

ようなものを使用するのが最も便利かもしれません。ここでは、$(APPROOT)が現在のアプリケーションの絶対ベースURIに置き換えられると仮定します。

0

開発環境で作業してテストしたり、あなたは二番目の形式を使用している場合には、このような何かを変更することが暗示する:

<img src="http://beta.example.com/myapp/img/world.gif" /> 

<img src="http://www.example.com/myapp/img/world.gif" /> 

にだから、それはすべてのリソースに対して常に絶対相対URIを持っている方が良いでしょう

+0

少し混乱していますか?最初の1つは絶対URLであり、第2のタイプは絶対的な相対URLです。それが正しいか? – Prashant

+1

いいえ、最初のものは実際のサーバーのコンテキストでは絶対的なので絶対相対的なものですが、相対的なものです。なぜなら、どのサーバーが配置されているかによって異なります。常に同じ場所を指します –

+1

最初のものは絶対パスですが相対URLです。 2番目は相対URLです。相対パス(img/world.gifなど)がベースURIのパスコンポーネントに適用される場合、絶対パスはベースURIからの任意のパスを置き換えます – VoidPointer

1

前者の方法は、サーバーのルートからの相対的なリソースを特定するの相対URL です。後者は絶対URLであり、ディレクトリだけでなく、ホスト、サブドメイン、さらにはプロトコルを示します。

それぞれに賛否両論があります。相対パスを使用すると、ドメイン名がURLの一部ではないため、新しいドメインに簡単に移行できます。 ../../images/のようなものを使用する必要がないので、絶対パスを使用するとファイルを整理するのが簡単になります。パフォーマンスに関しては

は、唯一の問題は、絶対URLであるということですわずかに長く(常にはないが)、それ以外の場合はありません。

0

WebアプリケーションフレームワークのHTMLヘルパーを使用してURLを生成します。例えば

、Javaサーブレットで

:CakePHPでは<c:url value='/img/word.gif' />

:Railsでは<?php echo $html->url('/img/word.gif'); ?>

: `<% =のlink_to ...%>

あなたを使用する理由フレームワークのHTMLヘルパーは、Webアプリケーションを移動してもURLが破壊されないためです。

関連する問題