以下是在webb应用程序中调用图像的两种方法。
<img src="/myapp/img/world.gif" />
OR
<img src="http://www.example.com/myapp/img/world.gif" />
最好使用或两者具有相同的含义。如果两者的含义不同,为什么呢?如果我在我的应用程序中使用第二种方法调用所有文件(图像,swf,flv等等),是否有任何性能限制。
答案 0 :(得分:6)
一般来说,第一种方法应该是引用应用程序中任何资源的首选方法。它被称为相对URI引用,它允许您将应用程序转移到另一个域名而不更改所有链接。
您甚至可以考虑使用相对路径,例如
<img src="img/world.gif" />
...假设上面的HTML出现在http://www.example.com/myapp/main.html
等某个地方这样你也没有绑定到/ myapp路径前缀,可以轻松地将你的应用程序移动到/ superapp而不需要改变它。
大多数应用程序框架和模板系统都有报告当前应用程序的根URI的方法。在这种情况下,使用像
这样的东西可能是最方便的<img src="$(APPROOT)/img/world.gif" />
......取决于您特定环境的具体替换/扩展机制。这里假设$(APPROOT)将替换为当前应用程序的绝对基URI。
答案 1 :(得分:1)
前一种方法是 相对URL ,用于查找相对于服务器根目录的资源。后者是 绝对URL ,它不仅指示目录,还指示主机,子域,甚至协议。
他们各有利弊。使用相对路径可以更轻松地迁移到新域,因为域名不是URL的一部分。使用绝对路径可以更轻松地组织文件,因为您不必使用 ../../ images / 之类的东西(这会使事情变得混乱且难以阅读)。
至于性能,唯一的问题是绝对URL稍长(虽然不是总是),否则没有。
答案 2 :(得分:0)
没有性能问题,但很多时候您在开发环境中工作和测试,如果您使用第二种形式,则意味着更改类似的内容:
<img src="http://beta.example.com/myapp/img/world.gif" />
到
<img src="http://www.example.com/myapp/img/world.gif" />
因此,最好始终为所有资源设置绝对相对URI
答案 3 :(得分:0)
使用您的Web应用程序框架的HTML帮助程序生成URL。
例如,
在Java Servlets中:<c:url value='/img/word.gif' />
在CakePHP中:<?php echo $html->url('/img/word.gif'); ?>
在Rails中:`&lt;%= link_to ...%&gt;
使用框架的HTML帮助程序的原因是因为移动Web应用程序不会破坏您的URL。