Вы столкнулись с проблемой кеширования. Статические ресурсы, например изображения, кэшируются в каждой точке цепочки между вашим сервером и браузером. Это хорошая вещь. Наиболее приемлемые системы настроены для кэширования изображений на сервере не менее 1 года (и это если они не кэшируются в браузере).
Чтобы решить эту проблему с кешем, вам нужно (i) дать файлам новые имена, (ii) перенастроить заголовки Vary
, чтобы указать, что они не должны кэшироваться, или (iii) добавить фрагмент уникальности - например вместо использования static/graph.png
добавьте метку времени 'static/graph.png?v=' + (new Date()).valueOf()
или хэш md5.
обновление: Динко дал вам хороший ответ (прочитайте ссылки, которые он предоставляет). Чтобы добавить кэш-очистку на стороне сервера, не создавая новые файлы, вы можете вычислить контрольную сумму md5 (недостаток: вам нужно прочитать весь файл):
from hashlib import md5
fname = 'static/graph.png'
with open(fname, 'rb') as fp:
checksum = md5.new(fp.read()).hexdigest()
fname += "?v" + checksum
или используйте последний измененный атрибут (не всегда надежный):
from hashlib import md5
fname = 'static/graph.png'
modified_tstamp = str(int(os.stat(fname).st_mtime * 10**6))
fname += "?v" + checksum
оба эти метода будут обслуживать кэшированную версию, пока файл не изменится.