Абсолютна та відносна URL-адреси


214

Я хотів би знати відмінності між цими двома типами URL-адрес: відносні URL-адреси (для зображень, файли CSS, JS-файли тощо) та абсолютні URL-адреси.

Крім того, який з них краще використовувати?

Відповіді:


191

Загалом, найкращою практикою є використання відносних URL-адрес, щоб ваш веб-сайт не був прив’язаний до базової URL-адреси, де він зараз розміщений. Наприклад, він зможе працювати на localhost, а також на вашому відкритому доступі, без змін.


6
+1 Я згоден Можливо, буде декілька разів, коли абсолютні URL-адреси краще, наприклад, при використанні CDN або якщо вам потрібно змінити вміст веб-сайту. Пошук доменного імені набагато простіше, ніж пошук відносних URL-адрес IMHO.
Sune Rievers

67
Для цілей обслуговування може бути простіше використовувати абсолютні URL-адреси без доменного імені. тобто на StackOverflow використовуйте абсолютну URL-адресу '/ questions / 2005079 / absol-vs-Rela-URL-адреси' для посилання на це питання. Значок '/' на передній частині робить URL-адресою абсолютною. Такий підхід окупається, коли ви пересуваєте файли навколо або змінюєте структуру каталогів свого проекту.
Майк

10
@Baumr Але ви можете це зробити? Я, безумовно, шанувальник / прихильник використання цього методу, але потрапляти в більш широкі рамки та великі рефактори - це горезвісна неприємна / жахлива задача. Хоча ви думали, що, можливо, ви переключили їх усіх, навіть у розумному IDE, часто їх можна пропустити, якщо вони закодовані в рядки або динамічно створені. Найгірше, що зазвичай пропущені посилання не потрапляють до тих пір, поки ваше рішення не повернеться у виробництво ... :(
dudewad

31
@Mike, чому б ви назвали кореневі URL - адреси "абсолютними"?
törzsmókus

4
@ törzsmókus гарне запитання. Це не дозволяє мені редагувати, і це було років тому, перш ніж я навіть натрапив на термін "родич".
Майк

237

Чи слід використовувати абсолютні чи відносні URL-адреси?

Якщо під абсолютними URL-адресами ви маєте на увазі URL-адреси, включаючи схему (наприклад, http / https) та ім'я хоста (наприклад, yourdomain.com), цього ніколи не роблять (для місцевих ресурсів), оскільки це буде жахливо підтримувати та налагоджувати.

Скажімо, ви використовували абсолютну URL-адресу скрізь у коді <img src="http://yourdomain.com/images/example.png">. Тепер, що буде, коли ви збираєтесь:

  • перейти на іншу схему (наприклад, http -> https)
  • переключити доменні імена (test.yourdomain.com -> yourdomain.com)

У першому прикладі, що станеться, ви отримаєте попередження про небезпечний вміст, який запитується на сторінці. Оскільки всі ваші URL-адреси важко кодуються для використання http (: //yourdomain.com/images/example.png). А під час запуску ваших сторінок через https браузер очікує, що всі ресурси будуть завантажені через https, щоб уникнути витоку інформації.

У другому прикладі, коли ви розміщуєте свій веб-сайт у прямому ефірі з тестового середовища, це означає, що всі ресурси все ще вказують на ваш тестовий домен, а не на живий домен.

Отже, щоб відповісти на ваше запитання щодо використання абсолютних чи відносних URL-адрес: завжди використовуйте відносні URL-адреси (для місцевих ресурсів).

Які відмінності між різними URL-адресами?

Спочатку давайте ознайомимося з різними типами URL-адрес, якими ми можемо користуватися:

  • http://yourdomain.com/images/example.png
  • //yourdomain.com/images/example.png
  • /images/example.png
  • images/example.png

До яких ресурсів намагаються отримати ці URL-адреси на сервері?

У наведених нижче прикладах я припускаю, що веб-сайт працює з наступного місця на сервері /var/www/mywebsite.

http://yourdomain.com/images/example.png

Вищенаведена (абсолютна) URL-адреса намагається отримати доступ до ресурсу /var/www/website/images/example.png. Цей тип URL-адреси - це те, чого ви завжди хочете уникати, вимагаючи запиту ресурсів з вашого власного веб-сайту з причини, викладеної вище. Однак це має своє місце. Наприклад, якщо у вас є веб-сайт http://yourdomain.comі ви хочете запросити ресурс із зовнішнього домену через https, ви повинні використовувати це. Напр https://externalsite.com/path/to/image.png.

//yourdomain.com/images/example.png

Ця URL-адреса є відносною відповідно до поточної схеми, що використовується, і майже завжди повинна використовуватися, включаючи зовнішні ресурси (зображення, javascripts тощо).

Цей тип URL-адреси полягає у використанні поточної схеми сторінки, на якій він знаходиться. Це означає, що ви знаходитесь на цій сторінці, http://yourdomain.comа на цій сторінці - тег зображення, <img src="//yourdomain.com/images/example.png">за яким URL-адреса зображення буде вирішена http://yourdomain.com/images/example.png.
Коли ви були б на цій сторінці http**s**://yourdomain.comі на цій сторінці є тегом зображення, <img src="//yourdomain.com/images/example.png">URL-адреса зображення вирішиться в https://yourdomain.com/images/example.png.

Це запобігти завантаження ресурсів через протокол HTTPS , коли він не потрібен , і автоматично гарантує , що запитується через HTTPS , коли це буде необхідно.

Наведена вище URL-адреса вирішується так само, як на попередній URL-адресі:

Вищенаведена (абсолютна) URL-адреса намагається отримати доступ до ресурсу /var/www/website/images/example.png.

/images/example.png

Для місцевих ресурсів це кращий спосіб їх посилання. Це відносна URL-адреса, заснована на корені документа ( /var/www/mywebsite) вашого веб-сайту. Це означає, що коли у вас <img src="/images/example.png">це буде завжди вирішуватись /var/www/mywebsite/images/example.png.

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

images/example.png

Це також відносна URL-адреса, хоча трохи інша, ніж попередня. Ця URL-адреса є відносно поточного шляху. Це означає, що він вирішує різні шляхи залежно від того, де ви знаходитесь на сайті.

Наприклад, коли ви знаходитесь на сторінці http://yourdomain.comі використовуєте <img src="images/example.png">її, це вирішиться на сервері так, /var/www/mywebsite/images/example.pngяк очікувалося, однак, коли ви знаходитесь на сторінці, http://yourdomain.com/some/pathі ви використовуєте точно такий же тег зображення, на який він раптом вирішиться /var/www/mywebsite/some/path/images/example.png.

Коли використовувати що?

Коли ви запитуєте зовнішні ресурси, ви, швидше за все, хочете використовувати URL щодо схеми (якщо ви не хочете застосовувати іншу схему), а при роботі з локальними ресурсами ви хочете використовувати відносні URL-адреси на основі кореня документа.

Приклад документа:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <link href='//fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700' rel='stylesheet' type='text/css'>
        <link href="/style/style.css" rel="stylesheet" type="text/css" media="screen"></style>
    </head>
    <body>
        <img src="/images/some/localimage.png" alt="">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
    </body>
</html>

Деякі дурні копії


2
Чи використовує абсолютні URL-адреси завантаження сторінки швидше, ніж порівняно з використанням відносних URL-адрес? (Будь-який час, витрачений на вирішення відносного шляху?)
shasi kanth

2
Будь-яка можлива різниця була б такою маленькою, це не те, про що слід турбуватися, якщо вона взагалі вимірюється.
PeeHaa

3
Приклад включення Google Jquery як протокол: <script src = "// ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script>
shasi kanth

8
Ця відповідь передбачає, що абсолютні URL-адреси не створюються динамічно, що вирішує кожну проблему.
Ні

2
Дж. Моні прав. Сучасні веб-рамки мають поняття "зворотна маршрутизація", що дозволяє створювати URL-адреси з однієї зі своїх сторінок на іншу з ваших сторінок (вона повинна бути на іншій сторінці вашого ж веб-сайту). Вони дозволяють вказати ім’я для URL-адреси, а потім використовувати це ім'я замість URL-адреси. Таким чином, якщо ви хочете коли-небудь змінити URL-адресу, ви можете змінити URL-адресу в одному місці, оскільки скрізь, коли ви ще коли-небудь посилаєтесь на цю URL-адресу за її назвою.
Кевін Вілер

65

Дивіться це: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax

foo://username:password@example.com:8042/over/there/index.dtb;type=animal?name=ferret#nose
\ /   \________________/\_________/ \__/            \___/ \_/ \_________/ \_________/ \__/
 |           |               |       |                |    |       |           |       |
 |       userinfo         hostname  port              |    |       parameter query  fragment
 |    \_______________________________/ \_____________|____|____________/
scheme                  |                               | |  |
 |                authority                           |path|
 |                                                    |    |
 |            path                       interpretable as filename
 |   ___________|____________                              |
/ \ /                        \                             |
urn:example:animal:ferret:nose               interpretable as extension

Абсолютна URL-адреса включає частини перед частиною "шлях" - іншими словами, вона включає схему ( httpin http://foo/bar/baz) та ім'я хоста ( fooin http://foo/bar/baz) (і необов'язково порт, користувальницьку інформацію та порт).

Відносні URL-адреси починаються з шляху.

Абсолютні URL-адреси, безумовно, абсолютні: розташування ресурсу можна вирішити, дивлячись лише на саму URL-адресу. Відносна URL-адреса в певному сенсі неповна: для її вирішення потрібні схема та ім’я хоста, і вони, як правило, взяті з поточного контексту. Наприклад, на веб-сторінці за адресою

http://myhost/mypath/myresource1.html

ви можете поставити посилання так

<a href="pages/page1">click me</a>

В hrefатрибуті посилання використовується відносна URL-адреса, і якщо її натиснути, її потрібно вирішити, щоб слідувати за нею. У цьому випадку поточний контекст є

http://myhost/mypath/myresource1.html

тому схема, ім'я хоста та провідний шлях до них приймаються та передують pages/page1, що дають результат

http://myhost/mypath/pages/page1

Якби посилання було б:

<a href="/pages/page1">click me</a>

(зауважте, що /з'являється на початку URL-адреси), тоді це було б вирішено як

http://myhost/pages/page1

тому що ведучий /вказує корінь хоста.

У веб-застосуванні я б радив використовувати відносні URL-адреси для всіх ресурсів, які належать до вашої програми. Таким чином, якщо ви зміните розташування сторінок, все продовжить працювати. Будь-які зовнішні ресурси (це можуть бути сторінки, що знаходяться повністю поза вашою програмою, але також статичний вміст, який ви доставляєте через мережу доставки вмісту), завжди слід вказувати на використання абсолютних URL-адрес: якщо у вас немає, просто немає способу їх знайти, оскільки вони проживати на іншому сервері.


9
Відносні URL-адреси не потрібно починати з шляху URL-адреси. //example.com/…, ?foobarа #foobarтакож є відносними URL-адресами і не починаються з шляху до URL-адреси (добре, адже ?foobarможна сказати, що він починається з порожнього шляху).
Gumbo

@Gumbo, //example.com/…URL-адреси типу називаються відносними? це для мене нове.
törzsmókus

3
@ törzsmókus У термінах RFC 2396 : "Відносні посилання URI відрізняються від абсолютного URI тим, що вони не починаються з назви схеми".
Гумбо

50

Припустимо, ми створюємо підрозділ, файли якого знаходяться у папці http://site.ru/shop .

1. Абсолютна URL-адреса

Link to home page
href="http://sites.ru/shop/"

Link to the product page
href="http://sites.ru/shop/t-shirts/t-shirt-life-is-good/"

2. Відносна URL-адреса

Link from home page to product page
href="t-shirts/t-shirt-life-is-good/"

Link from product page to home page
href="../../"

Хоча відносна URL-адреса виглядає коротшою, ніж абсолютна, але абсолютні URL-адреси є більш кращими, оскільки посилання можна використовувати без змін на будь-якій сторінці сайту.

Проміжні випадки

Ми розглянули два крайні випадки: "абсолютно" абсолютні та "абсолютно" відносні URL-адреси. Але в цьому світі все відносно. Це стосується і URL-адрес. Щоразу, коли ви говорите про абсолютну URL-адресу, ви завжди повинні вказувати відносно того, що.

3. Відносна протокол URL

Link to home page
href="//sites.ru/shop/"

Link to product page
href="//sites.ru/shop/t-shirts/t-shirt-life-is-good/"

Google рекомендує таку URL-адресу. Однак, як правило, вважається, що http: // і https: // - це різні сайти.

4. Коренева URL-адреса

Тобто відносно кореневої папки домену.

Link to home page
href="/shop/"

Link to product page
href="/shop/t-shirts/t-shirt-life-is-good/"

Це хороший вибір, якщо всі сторінки знаходяться в одному домені. Переміщуючи свій веб-сайт на інший домен, вам не доведеться робити масову заміну доменного імені в URL-адресах.

5. Базова URL-адреса (відносна домашня сторінка)

Тег <base> вказує базову URL-адресу, яка автоматично додається до всіх відносних посилань та якорів. Базовий тег не впливає на абсолютні посилання. В якості базової URL-адреси ми вкажемо домашню сторінку: <base href = "http://sites.ru/shop/">.

Link to home page
href=""

Link to product page
href="t-shirts/t-shirt-life-is-good/"

Тепер ви можете перемістити свій сайт не тільки в будь-який домен, але і в будь-яку підпапку. Просто майте на увазі, що хоча URL-адреси виглядають як відносні, насправді вони абсолютні. Особливо зверніть увагу на якіри. Для навігації на поточній сторінці ми повинні написати href = "футболки / футболка-життя-це-добре / # коментарі" не href = "# коментарі". Останній закине на домашню сторінку.

Висновок

Для внутрішніх посилань я використовую базові URL-адреси (5). Для зовнішніх посилань та інформаційних бюлетенів я використовую абсолютні URL-адреси (1).


1
чудова відповідь. занадто погано він затримується занадто низько на сторінці, щоб люди могли його бачити. відповідає на багато коментарів до інших відповідей.
олігофрен

24

Дійсно є три типи, про які слід обговорити прямо. На практиці, хоча URL-адреси були абстраговані для обробки на нижчому рівні, і я б сказав, що розробники могли пройти все життя, не записуючи жодної URL-адреси вручну.

Абсолютний

Абсолютні URL-адреси прив'язують ваш код до протоколу та домену. Це можна подолати за допомогою динамічних URL-адрес.

<a href=“https://dev.example.com/a.html?q=”>https://dev.example.com/a.html?q=</a>

Абсолютні плюси:

  1. Контроль - субдоменом та протоколом можна керувати. Люди, які входять через незрозумілий субдомен, будуть переведені у відповідний субдомен. Ви можете переходити вперед і назад між безпечним і незахищеним, якщо це доречно.

  2. Настроюється - розробники люблять, щоб речі були абсолютними. Ви можете створити чіткі алгоритми, використовуючи абсолютні URL-адреси. URL-адреси можна налаштувати так, щоб URL-адресу можна було оновити на всьому сайті за допомогою однієї зміни в одному файлі конфігурації.

  3. Виразність - Ви можете шукати людей, які скреблі ваш сайт, або, можливо, підбирати додаткові зовнішні посилання.


Кореневий відносний

Кореневі URL-адреси відносять ваш код до базової URL-адреси. Це можна подолати за допомогою динамічних URL-адрес та / або базових тегів .

<a href=“/index.php?q=”>.example.com/index.php?q=</a>

Кореневі відносні плюси:

  1. Налаштовується - базовий тег робить їх відносно будь-якого кореня, який ви вирішите полегшити перемикання доменів та реалізацію шаблонів.

Відносна

Відносні URL-адреси прив'язують ваш код до структури каталогу. Неможливо цього подолати. Відносні URL-адреси корисні лише у файлових системах для проходження каталогів або як ярлик для найголовнішого завдання.

<a href=“index.php?q=”>index.php?q=</a>
<link src=“../.././../css/default.css” />

Відносні мінуси:

  1. ПЛІШИТИ - Скільки це крапок? скільки папок це? Де файл? Чому це не працює?

  2. ОБСЛУГОВУВАННЯ - Якщо файл випадково переміщений, ресурси припиняють завантаження, посилання надсилають користувача на неправильні сторінки, дані форми можуть бути надіслані на неправильну сторінку. Якщо файл НЕОБХІДНО перенести всі ресурси, які збираються припинити завантаження, і всі посилання, які будуть неправильними, потрібно оновити.

  3. НЕ МАЄТЬСЯ - Коли веб-сторінки стають складнішими і перегляди починають повторно використовуватись на кількох сторінках, відносні посилання будуть відносно файлу, до якого вони були включені. Якщо у вас є фрагмент навігації HTML, який буде розміщений на кожній сторінці, то відносність буде відносно багатьох різних місць. Перше, що люди розуміють, коли вони починають створювати шаблон, - це те, що їм потрібен спосіб управління URL-адресами.

  4. КОМП'ЮТЕРНІ - Вони реалізовані вашим браузером (сподіваємось згідно з RFC). Див. Розділ 5 у RFC3986 .

  5. OOPS! - Помилки або помилки можуть призвести до павукових пасток.


Еволюція маршрутів

Розробники перестали писати URL-адреси в тому сенсі, про який мова йде тут. Усі запити призначені для індексного файлу веб-сайту і містять рядок запиту, також маршрут. Маршрут можна розглядати як міні-URL, який повідомляє вашій програмі вміст, який потрібно створити.

<a href="<?=Route::url('named_url', array('first' => 'my', 'last' => 'whacky'))?>">
    http://dev.example.com/index.php/my:whacky:url
</a>

Плюси плюсів:

  1. Усі переваги абсолютних URL-адрес.
  2. Використання будь-якого символу в URL-адресі.
  3. Більше контролю (добре для SEO).
  4. Можливість алгоритмічного генерування URL-адрес. Це дозволяє настроювати URL-адреси. Змінення URL-адреси - це одна зміна одного файлу.
  5. Не потрібно 404 не фундаментів. Зворотні маршрути можуть відображати карту сайту чи сторінку помилок.
  6. Зручна безпека непрямого доступу до файлів додатків. Заява охоронців може гарантувати, що всі приїжджають через належні канали.
  7. Практичність у підході MVC.

My Take

Більшість людей так чи інакше використовуватиме всі три форми у своїх проектах. Головне - зрозуміти їх і вибрати той, який найкраще підходить для виконання завдання.


Вам не вистачає відносних протокольних URL-адрес, які суворо кращі, ніж абсолютно абсолютні URL-адреси. Абсолютні URL-адреси викликають занепокоєння під час оновлення схеми (здебільшого до HTTPS), відносні URL-адреси це виправляють.
Тобу

@Tobu Просто обслуговуйте все через HTTPS.
Немає

Побічна примітка: схоже, ви використовували друкарські лапки у більшості прикладів своїх кодів вище. Ви можете виправити це.
domsson

І який тип URL - це перший із крапкою? Напр. "./Index.html"
Narvalex

Не могли б ви детальніше зупинитися на ясновидінні ? Якщо ви використовували URL-адреси "Root Relative", чому б вам не вдалося побачити людей, які скребли ваш сайт?
Lovethenakedgun

6

Якщо він використовується для вашого веб-сайту, краще використовувати відносну URL-адресу, наприклад, якщо вам потрібно перенести веб-сайт на інше доменне ім’я або просто налагодити локально, ви можете.

Погляньте, що робить stackoverflow (ctrl + U у firefox):

<a href="/users/recent/90691"> // Link to an internal element

У деяких випадках вони використовують абсолютні URL-адреси:

<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=5934">

... але це лише найкраща практика для підвищення швидкості. У вашому випадку це не схоже на те, що ви робите щось подібне, тому я б не переймався цим.


6

Тут мені доведеться не погодитися з більшістю.

Я думаю, що відносна схема URL-адрес є "чудовою", коли ви хочете швидко щось запустити і не працювати, а не думати поза межами, особливо якщо ваш проект невеликий з кількома розробниками (або просто з вами).

Однак, як тільки ти починаєш працювати над великими, жирними системами, де весь час перемикаєш домени та протоколи, я вважаю, що є більш елегантний підхід.

Якщо порівнювати абсолютну та відносну URL-адреси по суті, Абсолют виграє. Чому? Тому що це ніколи не зламається. Колись. Абсолютна URL-адреса - це саме те, про що йдеться. Уловлювач полягає в тому, коли вам доведеться ПІДТРИМАТИ абсолютні URL-адреси.

Слабкий підхід до абсолютного посилання на URL-адреси насправді важко кодує всю URL-адресу. Не чудова ідея, і, мабуть, винуватець того, чому люди вважають їх небезпечними / злими / дратівливими для підтримки. Кращий підхід - написати собі простий у користуванні генератор URL-адрес. Вони легко писати і можуть бути неймовірно потужними - автоматично визначається ваш протокол, легко конфігурується (буквально встановлюється URL-адреса один раз для всього додатка) тощо, і він вводить ваш домен все сам. Приємна річ у цьому: ви продовжуєте кодування за допомогою відносних URL-адрес, а під час виконання додаток вставляє ваші URL-адреси як повноцінні абсолюти. Дивовижно.

Бачачи, як практично всі сучасні сайти використовують якийсь динамічний бек-енд, в інтересах зазначеного сайту це робити саме так. Абсолютні URL-адреси роблять більше, ніж просто дають вам зрозуміти, куди вони вказують - вони також можуть покращити ефективність роботи з SEO.

Я можу додати, що аргумент про те, що абсолютні URL-адреси якимось чином змінять час завантаження сторінки, є міфом. Якщо ваш домен важить більше кількох байтів, і ви користуєтесь комутованим модемом у 1980-х, обов'язково. Але це вже просто не так. https://stackoverflow.com/ становить 25 байт, тоді як файл "topbar-sprite.png", який вони використовують для області навігації сайту, важить 9+ кб. Це означає, що додаткові дані URL-адреси становлять .2% завантажених даних порівняно з файлом спрайту, і цей файл навіть не вважається великим хітом продуктивності.

Це велике, неоптимізоване, повне зображення фонового зображення набагато частіше сповільнить ваші завантаження.

Цікавий пост про те, чому відносні URL-адреси не слід використовувати тут: http://yoast.com/relative-urls-isissue/

Наприклад, проблема, яка може виникнути у родичів, полягає в тому, що іноді відображення серверів (пам'ятайте про великі, заплутані проекти) не співпадає з іменами файлів, і розробник може зробити припущення щодо відносної URL-адреси, яка просто не є правда. Я щойно це побачив на проекті, над яким я працюю, і він звів всю сторінку.

Або, можливо, розробник забув переключити вказівник і раптом Google проіндексував всю вашу тестову середу. Whoops - дублюючи вміст (погано для SEO!).

Абсолюти можуть бути небезпечними, але при правильному використанні та у спосіб, який не може порушити вашу конструкцію, вони виявляються більш надійними. Подивіться на статтю, в якій наведено купу причин, чому генератор URL-адрес Wordpress є надзвичайним.

:)


1
Коли ви говорите абсолютну URL-адресу, ви маєте на увазі повну URL-адресу або використовуєте /посилання на базовий шлях? тобто /products/wallets/thing.htmlна thing.htmlвідміну відhttp://www.myshop.com/products/wallets/thing.html
Бредлі Флуд

Я вважаю, що попереднє використання "/" завжди буде відносно кореня домену. Отже, якщо ваш домен "www.example.com", будь-які посилання, кодовані як "/image1.jpg", трактуються як "www.example.com/image1.jpg". Елементи без провідної косої риси інтерпретуються як відносно кореня запиту. Коли я кажу "абсолютна URL-адреса", я маю на увазі повністю кваліфіковану URL-адресу. Я не хочу надсилати посилання MSDN через Інтернет, але це насправді досить непогана помилка
dudewad

Це поточна найкраща практика, хоча багато людей ще її не усвідомили. Я люблю маршрути, наприклад, в Кохані, де ви можете використовувати echo Route::url('route_name')для створення абсолютної URL-адреси, використовуючи URL-адресу сайту та інформацію про маршрути, з можливістю зробити це через HTTPS.
Немає

Я відчуваю необхідність зазначити, що комутовані модеми не залишилися в 80-х. Зараз багато людей, які не мають іншого вибору, крім комутованого або надмірно завищеного дуже обмеженого супутникового Інтернету ... і якщо ти поганий, що може бути краще, ніж безкоштовний комутатор? Мені це дійсно заважає бачити розробників, які вважають, що комутований номер більше не існує. Увійти на веб-сайт мого банку можна через 5-10 хвилин (!!!)… Paypal, Amazon та Ebay - не набагато кращі. Яєчна печера (віртуальний сайт для домашніх тварин) та Facebook просто не працюють над комутованим доступом. Це впливає на багато людей, які живуть у сільській місцевості.
Кет Кокс

Гаразд, так, хоча деякі люди на комутованому комунальному зв’язку, переважна (переважна) більшість користувачів не набирається. Це також має багато спільного з демографічним. Якщо ви знімаєте мега-величезні ультра-ефективні результати, то починайте відсікати домен зі своєї URL-адреси. Але головним моментом цього коментаря було підкреслити, що продуктивність зазвичай зустрічається в інших областях - ви можете отримати весь час передачі, який ви втратили в байтах url, оптимізуючи одне зображення. але, якщо 20% або більше ваших користувачів перебувають на комутованій комунікації, я думаю, що це важливо. У 2015 році, і в усіх практичних цілях, це просто не так.
dudewad

4

У більшості випадків відносні URL-адреси - це дорога дорога, вони є переносними за своєю природою, а це означає, що якщо ви хочете підняти свій сайт і помістити його хтось там, де він би працював миттєво, скорочуючи, можливо, години налагодження.

Існує досить пристойна стаття про абсолютні та відносні URL-адреси , перевірте це.


4

URL - адреса , який починається з URL - схеми і схеми певної частини ( http://, https://, ftp://і т.д.) є абсолютним URL - адреса.

Будь-яка інша URL-адреса є відносною URL-адресою і потребує базової URL-адреси, для якої відносна URL-адреса вирішується (і, таким чином, залежить), тобто URL-адресою ресурсу, на який використовується посилання, якщо не оголошено інше.

Погляньте на RFC 2396 - додаток C для прикладів вирішення відносних URL-адрес.


3

Скажімо, у вас є сайт www.yourserver.com. У кореневому каталозі веб-документів у вас є підпряме зображення, у якому ви myimage.jpg.

Абсолютна URL-адреса визначає точне розташування документа, наприклад:

http://www.yourserver.com/images/myimage.jpg

Відносна URL-адреса визначає місцеположення відносно поточного каталогу , наприклад, якщо ви знаходитесь у кореневій веб-каталозі, у якому знаходиться ваше зображення:

images/myimage.jpg

(стосовно цього кореневого каталогу)

Ви завжди повинні використовувати відносні URL-адреси, де це можливо. Якщо ви перемістите сайт на www.anotherserver.com, вам доведеться оновити всі абсолютні URL-адреси, які вказували на www.yourserver.com, відносні просто продовжуватимуть працювати так, як є.


0

Для кожної системи, що підтримує відносну роздільну здатність URI, і відносні, і абсолютні URI служать одній і тій же цілі: посилання. І їх можна використовувати взаємозамінно. Тож ви могли вирішити в кожному випадку по-різному. Технічно вони забезпечують однакове посилання.

Якщо бути точним, у кожного відносного URI вже є абсолютний URI. І це базовий URI, проти якого відносний URI. Отже, відносний URI - це фактично функція, що перевищує абсолютні URI.

І це також, чому з відносними URI ви можете зробити більше, ніж з абсолютним URI тільки - це особливо важливо для статичних веб-сайтів, які в іншому випадку не можуть бути настільки гнучкими в обслуговуванні порівняно з абсолютними URI.

Ці позитивні ефекти відносної роздільної здатності URI можуть бути використані і для динамічної розробки веб-додатків. Абсолютні URI з гнучкістю вводяться також легше впоратися в динамічному середовищі, тому для деяких розробників, які не впевнені в роздільній здатності URI і як правильно його реалізувати та керувати (не те, що це завжди просто), часто рекомендується використовувати абсолютний URI в динамічній частині веб-сайту, оскільки вони можуть вводити інші динамічні функції (наприклад, змінна конфігурація, що містить префікс URI), щоб уникнути негнучкості.

То яка користь у використанні абсолютних URI? Технічно цього немає, але я б сказав: відносні URI є складнішими, оскільки їх потрібно вирішити проти так званого абсолютного URI. Навіть роздільну здатність чітко визначається з багатьох років, ви можете натрапити на клієнта, який має помилку в роздільній здатності URI. Оскільки абсолютні URI не потребують жодної роздільної здатності, використовуючи абсолютні URI, не існує ризику зіткнутися з несправною поведінкою клієнта з відносною роздільною здатністю URI. Тож наскільки це ризик насправді? Ну, це дуже рідко. Я знаю лише про один Інтернет-браузер, який мав проблему з відносною роздільною здатністю URI. І це було не взагалі, а лише у дуже (незрозумілому) випадку.

Поруч із клієнтом HTTP (браузером), можливо, складніше і для автора гіпертекстових документів або коду. Тут абсолютний URI має ту перевагу, що його простіше перевірити, оскільки ви можете просто ввести його як є у адресному рядку веб-переглядачів. Однак, якщо це не лише ваша одногодинна робота, найчастіше корисніше вам зрозуміти абсолютне та відносне обробку URI, щоб ви могли реально використовувати переваги відносного зв’язку.


-4

Я б від душі рекомендував відносні URL-адреси для вказівки бітів того ж сайту на інші біти того ж сайту.

Не забувайте, що для зміни HTTPS - навіть якщо на одному веб-сайті - потрібна абсолютна URL-адреса.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.