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