HTML的src和href属性的相对路径或URL

3

使用框架可以轻松地列出html src和href属性的完整url,相对路径与之相比更加全面。但是这样做更快吗?是否会产生额外的DNS查询?当内容在同一服务器上时,最佳实践是什么?

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

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

Codeigniter的图像辅助函数img()的使用方法类似于用户指南中的这个

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

Codeigniter的anchor助手anchor()的用法类似于用户指南中的此链接:

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
我编辑了我的问题,包括CodeIgniter的内容,并打上了CodeIgniter的标签。 - steampowered
4个回答

6
就DNS而言,相对URL和绝对URL并没有什么区别。无论哪种情况下,您的浏览器最终都会在前面加上服务器URI。此外,您的网络堆栈第一次执行查找并缓存IP地址。除非出现问题,否则每个页面应该只有一次查找。当然,结果可能因情况而异,但这就是整个过程的工作方式。

4

尽量不要使用绝对路径。

否则,以后会给你带来麻烦。

比如当你切换或添加另一个域名时。

或者从测试服务器切换到生产服务器时。

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


我最近购买了一个高级脚本,其中在href中使用了完整的URL,例如<a href="<?=$basehttp;?>/someurl.php"></a>,并在配置文件中定义了$basehttp = "http://www.mydomain.com";,因此更改域名非常容易,但仍不清楚应该使用哪个。我正在考虑页面速度方面的问题。 - user1642018

1

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

  • 如果你想在本地开发网站
  • 你更改/添加域名(开发、暂存等)
  • 你切换到使用CDN

此外,你还会破坏你的开发环境,因为大多数现代化的开发环境将执行本地目录查找。无法使用域名。

另外,在开发环境中,你将从生产网站中获取内容,这将使修改和添加图像变得极其棘手。

最重要的是,与你的代码一起工作的其他开发人员会试图杀死你。这对你的健康不利。


大多数框架都允许您定义一个变量来表示域名,因此只需一行代码即可轻松更改整个站点的域名。要将其设置为本地,只需在这一行代码中添加“localhost/”即可。 - steampowered

0

对我来说,可移植性是个问题。仅基于这一点,我会选择第二个选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接