Мне нужно повторно получить изображение с веб-камеры. Существует множество примеров советов по прерывателям кеша, которые добавляют случайную строку к 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 не кэшируются в браузере.