Почему некоторые профессиональные веб-дизайнеры используют абсолютные пути вместо относительных путей (например, для CSS, Javascript, изображений и т.д.)?
Раньше я думал, что все используют относительные пути (например, /styles/style.css
). Но мне интересно, почему некоторые веб-дизайнеры popuar (например, http://www.getfinch.com и http://31three.com/) используйте абсолютные пути (http://example.com/styles/style.css
).
Итак, в основном, я спрашиваю, почему некоторые профессиональные дизайнеры используют абсолютные пути вместо относительных путей?
Ответы
Ответ 1
Оба из них используют ExpressionEngine CMS, вероятно, способ, которым CMS связывает таблицы стилей.
Но на самом деле это просто вопрос предпочтения. Лично я иду с корневым относительным /css/main.css
, потому что таким образом, если я разрабатываю локально + автономно, мне не нужно беспокоиться о переключении константы WEB_ROOT на локальный (меньше хлопот + короче).
Единственный случай, который я вижу для абсолютного, - это то, что домен использует CDN (сеть доставки контента), а домен отличается от домена происхождения.
Ответ 2
Хорошая тема в Google Webmaster Central... Обсуждается перспектива сканирования Google и легкая миграция.
Относительный путь и абсолютный путь
Ответ 3
Относительные пути
Я не думаю, что это слишком важно. Использование относительных путей проще при работе в автономном режиме, а затем при загрузке веб-сайта.
Также, если вы когда-либо изменили домен и хотите сохранить свой сайт. Вам нужно будет только изменить абсолютные ссылки, на которые вы ссылались, относительные ссылки будут работать нормально.
Абсолютные пути
Браузер может загружать только 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 - это потому, что той же политики происхождения.
Ответ 4
Я бы сказал, что личная предпочтения (скорее всего) или переносимость, если ваши файлы ссылаются на полный URL-адрес, который вам не нужно включать эти файлы при использовании html в другом месте, он продолжит вытягивание с удаленного сайта.
Это больше зависит от платформы, чем что-либо еще в моем опыте, например .Net использует ~/
для корня приложения, который отображается как /path/file.css
в HTML, только потому, что это простой путь для визуализации со стороны кода... там есть путь наименьшего сопротивления.
Другим случаем было бы, если вы загружаете материал из другого домена, например sstatic.net
здесь, у вас нет выбора действительно, он должен быть полностью квалифицированным.
Ответ 5
Я думаю, это только вопрос предпочтения. Я предпочитаю относительные URL-адреса, потому что это меньше боли для изменения, если вы меняете (под) домены. Но если у вас есть CMS или блог, он обычно обрабатывает это для вас в любом случае (например, {SITE_URL}/path/to/page
).
Ответ 6
Я думаю, что некоторые правила перенаправления Apache имеют проблемы с относительными путями. Выбор абсолютного пути гарантирует, что файл .htaccess будет удален.
Ответ 7
это зависит от приложения, которое вы строите, например. ваше приложение использует инфраструктуру mvc, как и в вашем примере, они должны использовать абсолютные пути, потому что вызов css, который они вызывают, не относится к относительному пути на каждой странице.
ИЗМЕНИТЬ
с использованием mvc framework не означает, что вам нужно использовать абсолютные пути, но вы также можете использовать относительные пути. Это только мое предпочтение.
Ответ 8
Не уверен в отношении этих конкретных сайтов, но часто люди используют разные URL-адреса для статических файлов ресурсов для повышения эффективности (а не для личных предпочтений). У большинства браузеров есть ограничение на количество одновременных подключений к одному URL-адресу при загрузке страницы, и вы можете обойти это ограничение, обслуживая файлы некоторыми файлами с другого URL-адреса, что потребует абсолютного пути. Это помогает загружать страницы быстрее и является обычной практикой.
Ответ 9
Помимо очевидных проблем с переносимостью, абсолютные пути не являются хорошей идеей, если контент находится в одном домене, потому что он может вызвать дополнительные DNS-запросы в определенных браузерах. Сохранение доменов по отношению к корню вашего сайта по возможности может помочь повысить производительность, если у вас нет CDN или отдельного набора доменов для размещения статического контента.
Надеюсь, это поможет!
Ответ 10
Кроме того, иногда, если код является серверным, может быть переменная, которая распечатывает полный URL-адрес. Если я правильно помню, обычно в WordPress тем, как они выводят правильный каталог.
Ответ 11
Некоторые люди даже скажут, что пути, начинающиеся с корня домена (например, /styles/style.css
), являются абсолютными (и, следовательно, проблематичными).
Здесь вещь: как абсолютные/полностью квалифицированные схемы, так и относительные схемы решают проблемы, связанные с тем, что происходит, когда вы перемещаете вещи. Но они решают разные проблемы. С полностью относительной схемой вы можете перемещать все, что связано с документом, на другой путь на сервере, и вы не будете ломать вещи. Полностью квалифицированные (и некоторые абсолютные схемы), вы можете перемещать любой отдельный документ и не нарушать его.
Я склонен обнаруживать, что я перемещаю вещи в группах чаще, чем перенос отдельного документа, поэтому я склонен использовать полностью относительные схемы. Другие люди могут иметь разные потребности.
Ответ 12
Причина, по которой я всегда слышал, заключается в том, что она предназначена для оптимизации SEO при привязке к страницам в одном домене. Я не уверен, что это что-то, что хранится в темных веках веб-разработки, или если это все еще так, но это рационализация, которую мне всегда дают.
Как я обойду это, я использую базовый атрибут в своем заголовке, чтобы получить преимущество относительных URL-адресов. Таким образом, я могу проверить на своем сервере разработки и просто изменить базовый URL-адрес или полностью его прокомментировать. Хотя все ваши относительные URL-адреса должны быть написаны так, как будто они перемещаются с базового набора URL.
Ответ 13
Если ваша страница вызывается с использованием протокола https, любой относительный путь css будет вызываться с использованием протокола https. Вам действительно нужно шифровать/расшифровывать содержимое css?: D
Однако, если вы используете абсолютный путь, ссылаясь на внешний css, вы можете указать используемый протокол, обычно http, а не https.