Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript: Node.js
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
andyj
104 / 50 / 10
Регистрация: 16.03.2017
Сообщений: 644
#1

Http favicon.ico

05.03.2018, 12:55. Просмотров 865. Ответов 6
Метки нет (Все метки)

Добрый день, поясните плииз!

использую "чистый" http-модуль для сервера (без експреса).
По ссылке/пути отдаю json-файл (генерирую "на лету").
А на сервер после отправки json файла приходит запрос на favicon.ico! КАЖДЫЙ РАЗ!

Кто это делает? Crome? или http? (когда кодил на php вроде не было такого частого обращения к иконке)

Можно это как-то отключить??? Может хотя-бы кеширование на стороне клиента можно принудительно включить(командой с сервера)?

"жаба душит" каждый раз иконку отправлять - иконка в 10-100 раз больше чем json! (1кб vs 20-100байт), а мне за трафиком (мобильным = слабым(в горах/дороге) или дорогим(в роуминге)) следить надо и максимально уменьшить нагрузку на сервер.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2018, 12:55
Ответы с готовыми решениями:

Express favicon
Гуру, подскажите куда копать... Пытаюсь освоить Express для написания простых...

Выполнение http.request http.get
О задаче: Начну с того что мне нужно сделать, мне нужно получить из формы...

Nodejs и http
Изучаю js и вот недавно попробовал ноду. В обучалках видел как пишут tcp и http...

Разница между http и express
В видео уроках, каждый использует запуск сервера разными способами, есть...

Странные символы в http response
Смысл такой. Делаю запрос на сайт таким методом. var net = require('net'); ...

6
msheal
672 / 282 / 179
Регистрация: 05.03.2015
Сообщений: 757
05.03.2018, 13:59 #2
Вроде как фавиконка и статичные ресурсы кешируются по умолчанию корректно. Может проблемы никакой нет и вы перезагружаете страницу с отключенным кешированием?

В любом случае, отключить эту чертову фавиконку можно так:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var http = require('http');
 
http.createServer(function (q, r) { 
  if (q.url === '/favicon.ico') {
    r.writeHead(200, {'Content-Type': 'image/x-icon'} );
    r.end();
    console.log('favicon requested');
    return;
  }
 
  // for not the favicon
  // ...
  
}).listen(8000);
0
andyj
104 / 50 / 10
Регистрация: 16.03.2017
Сообщений: 644
05.03.2018, 15:57  [ТС] #3
Цитата Сообщение от msheal Посмотреть сообщение
отключить эту чертову фавиконку можно так
Отключить иконку я и сам могу! Но это "костыль"! Хочу понять почему при загрузке в хроме http://127.0.0.1:8000/test.json сначала успешно идет запрос на /test.json, а потом ВСЕГДА переспрашивается /favicon.ico
Причем сколько бы я не нажимал F5 в хроме (перезагружал страницу) каждый раз у сервера переспрашивается /favicon.ico!
Я думал она должна была закешироваться после первого опроса!!! Ладно бы я не json открывал в браузере, а html с прописанной favicon...

Задумка: по таймеру опрашивать эту страницу в андроид-программе (или мобильном браузере) на медленном, дорогом и не стабильном инете. Андроид-программы пока нет - тестирую в хроме. В json - "статус" - от 5 до 100 символов. Иконка ~1.1Кб. Можно конечно убрать/отключить иконку, но хочу понять почему она в json файле вообще опрашивается??? Это фишка хрома или ноды? в php при выводе json вроде обращений к favicon не было...
0
МихаилБасов
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
06.03.2018, 02:52 #4
Лучший ответ Сообщение было отмечено andyj как решение

Решение

Выжимка из вики https://ru.wikipedia.org/wiki/Favicon
Многие современные браузеры не требуют явного указания на favicon.ico в коде страницы. В случае отсутствия такого указания браузер пытается загрузить favicon.ico из корня сайта. Однако имеется возможность явно указать положение значка в (X)HTML-коде (внутри элемента <head>), что позволяет при условии отсутствия /favicon.ico использовать для каждой страницы свой значок.

Для явного указания местоположения favicon.ico необходимо вписать следующую строку в код страницы вашего сайта внутрь секции head:
HTML5
1
<link rel="icon" type="image/png" href="/someimage.png" />
Кэш клиента
1
andyj
104 / 50 / 10
Регистрация: 16.03.2017
Сообщений: 644
10.03.2018, 18:16  [ТС] #5
Цитата Сообщение от МихаилБасов Посмотреть сообщение
Кэш клиента
Спасибо! навели на мысль - добавил в шапку/header отправки файла значка:
Javascript
1
2
3
4
5
res.writeHead(200,{
   //...
   'Cache-Control': "max-age=31536000",
   //...
});
после этого иконку браузер спросил один раз (на json-файл, где вообще не нужна икона) и перестал переспрашивать!
0
j2FunOnly
Модератор
827 / 794 / 471
Регистрация: 05.06.2015
Сообщений: 1,854
13.03.2018, 15:39 #6
Цитата Сообщение от andyj Посмотреть сообщение
после этого иконку браузер спросил один раз (на json-файл, где вообще не нужна икона) и перестал переспрашивать!
А вы указываете явно тип данных, которые отправляет ваш сервер? Что если установить заголовок Content-Type: application/json?
0
andyj
104 / 50 / 10
Регистрация: 16.03.2017
Сообщений: 644
13.03.2018, 22:28  [ТС] #7
Цитата Сообщение от j2FunOnly Посмотреть сообщение
А вы указываете явно тип данных, которые отправляет ваш сервер? Что если установить заголовок Content-Type: application/json?
Да! я написал специальную сложную функцию "отправки файла"!
Там и контроль "скорости раздачи", и "раздача частями"(с докачкой), и автоподбор заголовка (Content-Type) по расширению.
Сейчас добавил 'Cache-Control': "max-age=31536000" в раздачу иконки и после этого перестало ПЕРЕспрашивать.
0
13.03.2018, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2018, 22:28

Тормоза в работе HTTP сервера
Суть проблемы такова, я начал вникать в то как все работает в Node.js и все бы...

HTTP request. Почему data вызывается несколько раз?
Часть кода const http = require('https'); let reqOptions = { host:...

favicon.ico
создал иконку(картинку), засунул ее в код &lt;link rel=&quot;icon&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru