为什么一些专业的网页设计师使用绝对路径而不是相对路径(例如CSS,Javascript,图像等)?

时间:2010-08-04 02:24:33

标签: javascript css path

我曾经认为每个人都使用相对路径(例如/styles/style.css)。但我想知道为什么一些流行的网页设计师(例如http://www.getfinch.comhttp://31three.com/)使用绝对路径(http://example.com/styles/style.css)。

所以基本上我问为什么一些专业设计师使用绝对路径而不是相对路径?

13 个答案:

答案 0 :(得分:9)

这两个都使用ExpressionEngine CMS,它可能是CMS链接样式表的方式。

但实际上这只是一个偏好问题。我个人用root相对/css/main.css,因为这样,如果我在本地开发+离线,我不必担心将WEB_ROOT常量切换到本地(更少麻烦+更短)。

我看到的唯一绝对案例是域名是否使用CDN(内容传送网络),域名与原始域名不同。

答案 1 :(得分:2)

Google网站管理员中心的好主题...讨论Google抓取视角和易于迁移。

Relative Path vs Absolute Path

答案 2 :(得分:2)

相对路径
我认为要么做出太多差异。在脱机工作然后上传网站时,使用相对路径更容易。

此外,如果您要更改域名并希望仍然保留您的网站。您只需要更改已引用的绝对链接,相对链接就可以正常工作。

绝对路径
浏览器只能在任何给定的时间点从服务器下载2个文件。此外,在下载JavaScript时,它不会下载任何其他内容。因此,为了规避这2个文件限制,很多人使用子域。像:http://css.example.com/style.css - 这是为了提高页面加载速度。使用相对URL无法实现此效果。

在您进行AJAX调用时,需要注意绝对路径的地方。如果你硬编码进入你的javascript,调用url:http://www.example.com/ajaxfile.php - AJAX调用可以从http://www.example.com/index.php正常工作,但不能从http://example.com/index.php工作 - 这是因为相同的来源政策。

答案 3 :(得分:1)

我会说个人偏好(最有可能)或可移植性,如果您的文件引用完全限定的URL,在其他地方使用html时不需要包含这些文件,它将继续从远程站点拉出

在我的经验中,它更依赖于平台而不是其他任何东西,例如.Net使用~/作为应用程序根目录,在HTML中呈现为/path/file.css,因为这是一个简单的渲染路径从代码方面来看......阻力最小的路径就在那里。

另一种情况是,如果你从另一个域加载东西,例如sstatic.net,你没有选择,它必须是完全合格的。< / p>

答案 4 :(得分:1)

我认为这只是一个偏好问题。我更喜欢相对URL,因为如果你正在改变(子)域,那么改变就不那么痛苦了。但是,如果您有CMS或博客,它通常会为您处理(例如{SITE_URL}/path/to/page)。

答案 5 :(得分:1)

我认为某些Apache重定向规则存在相对路径问题。选择绝对路径可确保.htaccess文件被命中。

答案 6 :(得分:0)

例如,它取决于您正在构建的应用程序。你的应用程序使用mvc框架,就像你的例子中那样,它们必须使用绝对路径,因为它们调用的css不属于每个页面中的相对路径。

修改

使用mvc框架并不意味着您必须使用绝对路径,但您也可以使用相对路径。这只是我的偏好。

答案 7 :(得分:0)

不确定这些特定网站,但为了提高效率(通常不是个人偏好),人们通常会为静态资源文件使用不同的网址。大多数浏览器在加载页面时对单个URL的并发连接数有限制,您可以通过向文件提供来自不同URL的某些文件来绕过该限制,这需要绝对路径。这有助于页面加载更快,是一种常见的做法。

答案 8 :(得分:0)

除了明显的可移植性问题之外,如果内容位于同一个域中,绝对路径不是一个好主意,因为它可能会导致在某些浏览器中进行额外的DNS查找。尽可能保持域名相对于站点的根目录有助于提高性能,除非您有一个CDN或一组单独的域来托管静态内容。

希望这有帮助!

答案 9 :(得分:0)

此外,有时,如果代码是服务器端,则可能有一个变量正在打印出完整的URL。如果我没记错的话,通常在WordPress主题中就是如何输出正确的目录。

答案 10 :(得分:0)

有些人甚至会说从域的根开始的路径(例如/styles/style.css)是绝对的(因而有问题)。

这就是事情:绝对/完全合格的方案和相关方案解决了与移动事物时发生的事情有关的问题。但他们解决了不同的问题。使用完全相对的方案,您可以将与文档相关的所有移动到服务器上的不同路径,并且您不会破坏任何内容。使用完全限定(和一些绝对方案),您可以移动任何单个文档而不会破坏。

我倾向于发现我移动组的次数比移动单个文档的次数更多,因此我倾向于使用完全相对的方案。其他人可能有不同的需求。

答案 11 :(得分:0)

我一直听到的原因是,当链接到同一域上的页面时,它是用于SEO优化的。我不确定这是否是从网络开发的黑暗时代中保留的东西,或者如果这仍然是真的,但这是我一直给予的合理化。

我解决这个问题的方法是在头文件中使用base属性,这样我就可以获得相对URL的好处。这样我就可以在我的开发服务器上进行测试,只需更改基本URL或完全注释掉它。虽然您需要编写所有相对网址,就像它们从基本网址集导航一样。

答案 12 :(得分:0)

如果使用https协议调用您的页面,则还将使用https协议调用任何相对路径css。你真的需要加密/解密css内容吗? :d

但是,如果使用引用外部css的绝对路径,则可以指定要使用的协议,通常是http而不是https。