JS загружает изображение всегда с локального кэша - почему?
В общем для экономии трафика изображения возвращаю через ПХП. В заголовке возвращаю 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 - то браузер в первый раз запрашивает изображение с сервера и кэширует его, а в последующие разы на сервер вообще не обращается а ВСЕГДА берет изображение из кэша. Почему ???????? |
var pic1 = new Image(); pic1.src = '/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg&size=200&hash=' + Math.random(0,9999999); $('.full').append(pic); Должно сработать. ;) |
Цитата:
Выходит - хотите малую нагрузку на сервер - то навсегда забудьте о JS, Ajax, а используйте HTML + PHP. А кто делает наполнение из JS - все отключают кэш таким вот образом :cray: |
Цитата:
<img src="/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg?1380732233"> Cинее - время последнего изменения картинки Тогда(Если стирать предыдущее изо,) и загрузка с Js - будет давать ошибку pic1.src = '/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg?1380732233' по ошибке грузите чисто pic1.src = '/pages/list_foto.php?foto=../foto/avtoisgermanii.jpg'; |
Выставлены ли заголовки Cache-Control и Expires? Другие заголовки, причастные к кэшированию?
|
Часовой пояс GMT +3, время: 15:24. |