Как добавить заголовок запроса http, чтобы избежать кеширования изображения в браузере - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно повторно получить изображение с веб-камеры. Существует множество примеров советов по прерывателям кеша, которые добавляют случайную строку к URL, но это заполнит кеш браузера. Я обнаружил, что запуск такого процесса, получение образа 5 МБ каждые 1 или 2 секунды, займет все ваши 4 ГБ оперативной памяти в течение, скажем, одного часа, и остановит p c.

Копая глубже, я обнаружил, что добавление http-заголовок no store в ответе сервера может избежать кэширования браузера. источник: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

Это прекрасно работает. У меня просто есть тег IMG, подобный следующему:

<img id='img1' src='URL' onload='f()' />

, и как только изображение будет загружено и показано, обработчик загрузки начнет новую загрузку:

function f() {
  img1.src = 'URL'
}

Вот и все!

Проблема теперь в том, что у меня есть другая веб-камера от D-Link, где я не могу просто go внутри и добавить заголовок http-response. Поскольку без этого заголовка браузер теперь кэширует URL-адрес, например URL/image.jpg, вышеприведенный алгоритм будет неоднократно получать ответы из кэша, а не с веб-камеры, не показывая новых живых изображений.

Но, эй, вышеупомянутый Mozilla do c не говорит, что вы не должны пытаться сделать то же самое, что http-REQUEST-заголовок.

Итак, мой вопрос: как добавить заголовок http-запроса?

Я нашел некоторую информацию в https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers, но это очень длинное и сложное чтение. Я просто не понимаю Добавление заголовка запроса к вызову ajax - это всего лишь одна строка. Я не могу поверить, что так сложно добавить заголовок в GET URL для тега IMG.

В качестве альтернативы, мой вопрос: как избежать кэширования этого изображения браузером?

Конечная цель заключается в том, чтобы обработчик событий onload назначал тот же URL-адрес и чтобы браузер запрашивал этот URL-адрес с сервера.

Или я могу жить с cache-breaker с помощью к URL добавляется случайная строка, например:

img1.src = 'http:....image.jpg?' + somerandomstring

, пока все изображения со случайными URL не кэшируются в браузере.

...