Отключение моего фавикона: как и почему
16 мая 2022 г.На моем сайте нет фавиконки и, скорее всего, никогда не будет.
Я не 100% уверен, почему я так решительно отношусь к этому решению, но, учитывая тот факт, что у меня нет логотипа — и я действительно не хочу его — создание фавикона кажется ненужным.
Но вы не можете просто не определить фавикон (с помощью тега <link rel="shortcut icon" />
), потому что большинство веб-браузеров все равно попытаются его запросить. Это означает, что каждая загрузка страницы сопровождается вторым запросом файла favicon.ico
, который всегда будет возвращаться как Не найдено
.
Раздражает, да?
Итак, что нам делать?
Хотя мы могли бы просто собрать прозрачный favicon.ico
и покончить с этим, я хотел устранить этот второй запрос, а не просто использовать формальное изображение, чтобы удовлетворить мою потребность в успешном ответе.
Первая попытка
Хотя отсутствие тега значка не дает желаемых результатов, я решил поэкспериментировать со значениями, которые действуют. Моей первой попыткой было использовать простой хэш:
```разметка
Хотя это устранило ответ «404 Not Found» в запросе значка, в итоге он повторно запросил всю страницу. Это имеет смысл, так как #
в конечном итоге интерпретируется браузером как https://flower.codes/#
, и то же самое верно для почти любого другого символа, который вы, возможно, захотите попробовать (пробелы, вопросительные знаки, и т.д).
Не правильное решение.
Введите URL-адреса данных
Итак, мы не можем опустить фавиконку и не можем использовать произвольный символ... что мы можем сделать?
Немного покопавшись, я наткнулся на концепцию, с которой большинство веб-разработчиков хорошо знакомы: [URL-адреса данных] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URI) .
Для непосвященных: URI данных позволяют встраивать файлы непосредственно в ваш HTML, а не делать внешний запрос. Чтобы быть слишком упрощенными, они обычно состоят из определения типа загружаемого файла (например, text/html
или text/plain
) и содержимого файла (которое может быть закодировано для уменьшения количества персонажи).
Это означает, что вместо загрузки внешнего файла вы можете включить его в строку следующим образом:
```разметка
данные: текст/html,
Однако для наших целей мы можем определить фактически пустой URL-адрес данных, просто опуская как тип содержимого, так и само содержимое:
```разметка
Хорошо, но... Почему??
Как и ожидалось, это решило мою проблему. Включив контент напрямую и оставив его пустым, мы можем исключить второй запрос, не вызывая никаких ошибок в консоли.
Но зачем проходить через все эти неприятности?
Хотите верьте, хотите нет, но мне действительно нравятся фавиконки. Я думаю, что они значительно упрощают организацию вкладок и закладок. Но в мире (широкой сети), наполненном ими, отказ от одного из них на моем собственном сайте казался небольшим способом выделиться (и сделать все возможное, чтобы сделать это «правильным» способом, — это просто вишенка на торте).
Также опубликовано на flower.codes.
Оригинал