在引用资产时使用http会有什么不同吗?

时间:2013-05-22 19:27:57

标签: php html web-applications web laravel

所以我正在建立一个网页。我想在某个地方放一张光荣的照片。我当然会使用img标签,但我很好奇如果我这样做会有什么不同:

<img src="img/mypic.png">

与此相对:

<img src="http://www.mysite.com/img/mypic.png">

任何一个都会显示图像,但我对性能感到好奇。客户端浏览器是否关心使用哪种方法?我想A会更快,基于它“内部”处理请求的猜测,因此必须更快......

服务器总是通过方法B通过互联网发回请求吗?

鉴于该选项可用,是否比另一种更好?

你知道,我的想法是运行多个子域,其中一些子域可能会在以后完全转移。如果愿意,我想继续从我的“中央资产存储库”管理它们,而不是复制资产。如果我有成千上万的用户,我需要在什么时候关注这两种方法之间的性能?

有关管理资产或要考虑的最佳做法的其他建议吗?

2 个答案:

答案 0 :(得分:3)

在访问您自己域中的资源时,我会说从不使用http。速度与此相关的推理很少或没有任何关系。为什么要这样做是因为当您将ssl引入到您正在使用的任何地方时,http必须至少更改为https,而不是https所建立的连接。有些浏览器要么大声抱怨,要么在通过https连接时拒绝下载不安全的资产。请遵循这些指南

当您创建一个可以进行任何重写的应用程序并且可以从您站点中的多个“目录”访问页面,或者您希望在整个站点中使用通用标题或布局模板时,请选择以下格式:

/path/to/asset.js   - this is an absolute path

path/to/asset.js    - this is a relative path

唯一不合时宜的是当你在css中引用资源时,因为这些资源是相对于css加载的,但是css本身应该加载前导'/'

当访问外部资产(在cdn上加载js)时,更喜欢:

//example.com/path/to/asset.js  (works if the site support both http & https will request it however the hosting page was requested this is called a protocol relative path )

结束

http://example.com/path/to/asset.js

答案 1 :(得分:1)

使用laravel的最佳做法是

{{ URL::to_asset('files/image.jpg') }}

这将根据您的config/application.php设置生成绝对网址。 e.g。

http://myapp.com/files/image.jpg

此方法使用laravel环境,并且在您将资产移动到CDN或不同服务器或子域时非常灵活。所有URL都可以在配置文件中配置一行。

就速度而言,如果您使用绝对路径或相对路径,则它没有任何区别,因为浏览器能够非常快速地处理URL。