2011-09-21 106 views
2

使用框架可以很容易地列出完整的URL,以便我的html src和href属性,并且我觉得我通过列出完整的url而不是相对路径。但这是否更快?我是否会招致额外的DNS查询?当内容位于同一台服务器上时,最佳做法是什么?html src和href属性的相对路径或url

<img src='http://site.com/images/img1.png' />

VS

<img src='/images/img1.png' /> 

笨的形象帮助IMG()就像this from the users' guide

echo img('images/picture.jpg'); 
// gives <img src="http://site.com/images/picture.jpg" /> 

和CodeIgniter的锚帮手锚()就像this from the users guide

echo anchor('news/local/123','My News'); 
// gives <a href="http://example.com/index.php/news/local/123" >My News</a> 
+1

我在远程服务器上开发,所以http查找总是有效的。我在每次保存时将本地ide与远程服务器同步,并且只在远程服务器上运行代码。 “http://mysite.com/”部分由我的框架中的一个方法生成,所以如果我切换域,很容易改变。没有人回答我关于DNS查询速度的问题,这是我的要求。 – steampowered

+0

我编辑了我的问题,包括codigniter的东西,也标记codeigniter – steampowered

回答

4

就DNS而言,如果您使用相对或绝对URL,则无关紧要。无论如何,您的浏览器最终都会将服务器URI预先挂起。此外,您的网络堆栈首次执行查找,并缓存IP。除非出现问题,否则每页只能有一个查找。 YMMV当然,但这应该是这一切如何运作。

0

可移植性将是我的问题。我会根据这个选择第二个选项。

4

'从不'(几乎从不)使用绝对路径。

它会在以后咬你。

例如,当您切换/添加另一个域时。

从您的测试转到生产服务器。

基本上规则是内部URL的应该是相对的。

+0

我最近买了一个高级脚本,这是使用像这样的完整url在这个和定义$ basehttp =“http://www.mydomain.com”;在配置文件中,更改域名非常简单,但仍不清楚使用哪一个。我正在从网页速度上看。 – AMB

1

哦,你真的不想使用完整的路径。你将有很多工作要做的你:

  • 如果你想开发网站本地
  • 您更改/添加域(开发,分期等)
  • 您切换到使用CDN

你也会打破你的开发环境,因为大多数现代的将执行本地目录查找。不能用域来做到这一点。

另外,在开发环境中,您将从生产站点拉出,这将使修改和添加图像非常棘手。

最重要的是,使用您的代码的其他开发人员会尝试杀死您。这对你的健康有害。

+0

大多数框架允许您为域定义一个变量,因此使用一行代码很容易更改整个站点域。只需将“localhost /”添加到一行代码即可。 – steampowered