В общем для экономии трафика изображения возвращаю через ПХП. В заголовке возвращаю Last-Modified: со временем файла изображения, затем анализирую параметр при следующем обращении "If-Modified-Since" и если их время одинаково - то возвращаю код 304.
Если изображение загружается в HTML - то все ок. Т.е. первый раз изображение грузится с кодом 200, а затем (если файл не изменился) с кодом 304.
Если же изображение загружается из JS - то в первый раз код 200, а в последующие ВСЕГДА код 200 и сообщение что браузер берет его из локального кэша - т.е. изображение застревает в кэше браузера навечно.
Как заставить JS обращаться к серверу при последующих вызовах а не брать все из локального кэша ???
Вот пример корректной работы из HTML
<img src="/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg&size=80">
А вот неправильной работы из JS:
pic1 = new Image();
pic1.src = '/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg&size=200';
// $('<img src="' + src + '">').appendTo('.full');
Если IMG в HTML - то браузер действует так: В первый раз запрашивает изображение с сервера и кэширует его, в последующие разы делает запрос на сервер с пар-ром If-Modified-Since, в котором указывает время создания файла из своего кэша и если получает с сервера код 304 - то изображение берется с локального кэша.
Если IMG добавляется из JS - то браузер в первый раз запрашивает изображение с сервера и кэширует его, а в последующие разы на сервер вообще не обращается а ВСЕГДА берет изображение из кэша.
Почему ????????