Можно ли использовать абсолютно href на производственных площадках? - PullRequest
2 голосов
/ 21 июня 2009

Из-за некоторых правил переписывания apache в проекте, над которым я работаю, удобно сделать ссылки и ссылки в целом абсолютными, потому что это гарантирует, что браузер найдет файл за этой ссылкой, независимо от того, какой URL.

Пример:

<img src="http://localhost/project/gfx/abc.jpg"></img>

вместо

<img src="gfx/abc.jpg"></img>

Будет ли первый медленнее, чем второй, или в любом случае не так хорош?

Я не думаю, что это оптимизация; Я полагаю, что в любом случае я буду использовать абсолютные (если только нет действительно веской причины не делать этого), но мне интересно знать, в порядке ли использование абсолютных URL.

Обратите внимание, что это будет применяться ко всем ссылкам / путям (гиперссылки, css и javascript, AJAX-вызовы и т. Д.)

Ответы [ 7 ]

12 голосов
/ 21 июня 2009

Это не будет иметь никакого значения. Вы можете предпочесть сделать это, хотя:

<img src="/project/gfx/abc.jpg" />

Браузер определит для вас домен.

7 голосов
/ 21 июня 2009

Относительные пути хороши по разным причинам, многие из которых сводятся к:

  • Вы можете переместить весь сайт на новый домен, и вам не нужно изменять каждый отдельный файл.

Это относится не только к смене доменов, если сайт работает, но и при развертывании сайта, переходящего от тестового к производственному. Если бы у вас были абсолютные пути, вам пришлось бы изменить все ссылки с:

<a href="http://localhost/...">...</a>

до:

<a href="http://www.truedomain.com/...">...</a>

Я не думаю есть какое-то влияние на производительность - но я уверен, что другие, более знающие, чем я, скоро исправят меня, если я ошибаюсь.

1 голос
/ 21 июня 2009

Самая большая проблема в том, что вы не делаете свой сайт "переносимым". Это означает, что вы можете переместить его из разработки в стадию производства без изменений. Задумывались ли вы об использовании html base href tag вместо этого? Тогда вам нужно только изменить его в одном месте.

Существуют варианты базового тега, например, базовая цель, которые также могут быть полезны. Это старый тег, поэтому он будет работать в любом браузере.

1 голос
/ 21 июня 2009

Браузер определит полный URL-адрес для любого URL-адреса и, если возможно, повторно использует соединения, ему все равно необходим полный URL-адрес для запроса файла.

Подумайте об использовании абсолютного URL без имени домена (как предложил Самир). Если вы используете полные URL-адреса с разными доменными именами для одного и того же сайта (например, www.mysite.com и mysite.com), браузер не сможет повторно использовать соединение.

0 голосов
/ 21 июня 2009

AFAIK, использующий абсолютные или относительные пути, должен иметь одинаковую производительность при рендеринге в браузере. Каждое решение имеет свои преимущества и недостатки.

Например, относительные пути лучше, когда вам нужно развернуть приложение в разных доменах, и у вас нет способа автоматически адаптировать имя хоста. Эта проблема на самом деле не существует, если вы управляете своим сайтом с помощью языка программирования на стороне сервера.

С другой стороны, абсолютные ссылки имеют некоторые преимущества. Например, многие некачественные программы чтения и синтаксического анализа каналов не определяют путь к ресурсу при анализе вашего веб-сайта или даже вашего канала. Использование абсолютных путей обеспечивает лучшую совместимость со всеми видами внешних анализаторов.

0 голосов
/ 21 июня 2009

Я бы порекомендовал формат "/ path / from / document_root". единственное преимущество их динамической генерации, о которой вы упомянули в комментарии, - это если вы перенесете мультимедиа на какую-то CDN с другим доменом / IP.

0 голосов
/ 21 июня 2009

Относительные URL используют меньшую пропускную способность: P

Но вы действительно должны быть проданы ответами ChrisF и Самира. Если вы не можете доверять своему серверу Apache, чтобы он не переписывал что-то неправильно, я бы посоветовал вам взглянуть на это, а не рисовать все с абсолютами.

...