Как обновить то же изображение URL, а также сохранить кэширование? - PullRequest
0 голосов
/ 02 сентября 2011

Я обнаружил, что большинство решений добавляют «? + Time ()» после ссылки на изображение для принудительной загрузки изображения браузером каждый раз, однако это не идеальное решение, если на изображении нет реальных изменений.

Может ifModified в .ajax помочь?

Любые идеи приветствуются, спасибо!


Редактировать:

Есть ли способыбез добавления "? + ..." к изображению чернилами?

И учтите, что изображение может быть удаленным ресурсом.

Ответы [ 3 ]

1 голос
/ 02 сентября 2011

В идеале вы можете добавить время модификации файла (на сервере) или отметку времени ** PHP filemtime () **. Таким образом, только когда вы меняете изображение на сервере, метка времени изменяется и сразу все пользователи (при следующей загрузке) получают новую версию изображения.

Но вы должны использовать серверный язык, такой как PHP. Google "filemtime ()" для получения дополнительной информации.

Представительский пример:

<img src="image.png?<?php echo filemtime('image.png');?>" />

или

<?php
echo '<img src="image.png?'.filemtime('image.png').'" />';
?>

Вы также можете написать функцию, которая сделает это за вас:

function image($file) {
   return $file.'?'.filemtime($file);
}
echo '<img src="'.image('image.png').'" />';
1 голос
/ 02 сентября 2011

Вы можете добавить метку времени и размер файла (в комбинации) изображения в виде строки запроса (вещь после вопросительного знака)

В принципе, для этого могут использоваться любые метаданные файла, также как md5 ()реализации, но я не уверен, насколько хорошо это масштабируется.

Это простой способ без базы данных.

0 голосов
/ 03 сентября 2011

Существует и другое решение:

Вы также можете установить заголовок Expires на один год в будущем, например:

Срок действия истекает четверг, 15 сентября 2011 20:00:00 GMT

Это означает, что браузер будет пытаться кэшировать изображение в течение одного года, прежде чем запросить его снова с сервера.Но это может быть плохо, если вы измените изображение в это время.Затем пользователю придется выполнить жесткое обновление (Control + F5), чтобы принудительно обновить.Оставайтесь с моим 1-м раствором или даже лучше, используйте оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...