2013-02-17 2 views
0

я нарушу кэш изображения, просто присоединяяКакой метод будет предупреждать браузер о том, что изображение изменилось?

?time=current_time_stamp 

к моему URL изображений при создании запроса.

Однако мне нужно только разбить кеш сразу после того, как пользователь обновил фотографию.

Я могу добавить временную метку к каждому запросу изображения пользователя, но это похоже на чрезмерное убийство.

Есть ли способ рассказать обозревателю, изображение обновлено, обновите свой кеш.

В противном случае мне нужно будет добавить временную метку или аналогичные все динамические изображения, чтобы поймать любые изменения изображения.

Благодаря

+1

Вместо добавления '? Time = some_time_stamp', почему бы не добавить'? Time = time_last_modified'? Вы можете получить это значение из файловой системы, * или * сохранить его в базе данных самостоятельно. – Matt

+0

Что такое 'some_time_stamp'? Время обновления изображения? – Bergi

ответ

1

Лучший способ сделать это делать изменить имя файла изображения на сервере всякий раз, когда изображение изменяется таким образом, что при изменении изображения, браузер HTML содержит ссылку на новое имя файла и, таким образом браузер запрашивает новое имя файла (которого нет в кеше). Имя файла может содержать номер версии, который вы увеличиваете, когда файл изменяется, или вы можете просто использовать метку времени как часть имени файла.

Это дает вам лучшее из обоих миров. Вы получаете максимальное кэширование в браузере, когда изображение не изменилось, но вы также сразу получаете обновление при изменении изображения.

Также актуальным является то, что сервер может контролировать директивы кэширования для каждого отдельного элемента, чтобы указать браузеру, может ли он кэшировать или нет или как долго.

+0

Было так просто просто обновить имя файла в таблице sql и _1, _2 и т. Д. + Теперь я могу отслеживать, сколько загрузок было. – 2013-02-19 21:05:31