Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > servlet - скомандывать браузеру полный reload


Автор: sith 18.9.2007, 11:02
... идея такая... есть сервелет в котором генерируеться картинка... 
... метод генерирует картинку... сохраняет ее а потом в хтмл коде я указываю путь к этой картинке...
... при каждом заходе через сервлет картинка генерируеться заново... и должна отображаться другой... а чудо браузеры не всегда это понимают и очень часто подгружают старые картинки это критическая ошибка...
... так вот как указать браузеру что он должен полностью обновить страницу а не доставать ее из сових внутренних потрахов...

Автор: Tony 18.9.2007, 11:16
Код

response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Expires", "0");

Автор: sith 18.9.2007, 11:29
 а что такое Pragma

Автор: tux 18.9.2007, 11:43
Tony, не поможет. Заголовки респонса влияют только на содержимое страницы, но отнюдь не на линки к картинкам. Браузер кэширует картинки, ассоциируя их с линкой. Это можно использовать - добавлять каждый раз к линке на изображение параметр со случайным значением и проблема решена.

Автор: Tony 18.9.2007, 11:54
Цитата(sith @ 18.9.2007,  11:29)
а что такое Pragma

http://ru.wikipedia.org/wiki/XMLHttpRequest
Tux, попитка не пытка. Нас4ёт кеша я впервуй раз слышу про картинки.

Автор: Maksym 18.9.2007, 12:05
Цитата(Tony @  18.9.2007,  11:54 Найти цитируемый пост)
Нас4ёт кеша я впервуй раз слышу про картинки. 

Скорее всего, это специфично для конкретного браузера.

Автор: tux 18.9.2007, 12:13
Цитата(Maksym @  18.9.2007,  12:05 Найти цитируемый пост)
Скорее всего, это специфично для конкретного браузера. 

Насколько я понимаю, изображение кэшируют практически все браузеры. Если есть, например, такая ссылка: 
Цитата

http://host/application/showImage?img_id=1

то если изображение поменялось (например, в базе данных заменилось или поменялось содержимое файла, где оно хранилось), то браузер все равно будет показывать изображение из кэша пока reload руками не сделаешь. Такое поведение у всех известных мне браузеров. Но если к ссылек добавить какое-то значение, пусть оно будет псевдослучайным или каким-то счетчиком, например:
Цитата

http://host/application/showImage?img_id=1&img_dummy=34588eurte8

то браузер не найдет такую ссылку в кэше и отправит запрос веб-контейнеру. Естественно, значение img_dummy при каждой генерации ссылки должно меняться. Использовать его, конечно, не обязательно. smile

Автор: Maksym 18.9.2007, 12:17
Цитата(tux @  18.9.2007,  12:13 Найти цитируемый пост)
Использовать его, конечно, не обязательно. smile

Ага, но если изображения меняются -- то крайне желательно!? smile +1 просто и полезно.

Автор: sith 18.9.2007, 13:12
Код

 <img src=\"code.jpg?random="+Math.random()+"\""


но что то не очень помогло... 

Автор: tux 18.9.2007, 13:39
sith, ну если у тебя все так, то я не знаю как помочь. У меня один вариант - не писать ссылку на картинку напрямую, а выдавать картинку из контроллера/сервлета.

Автор: sith 18.9.2007, 14:04
ага... я понял... попробую так и сделать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)