Ответ 1
Добавить строку запроса с произвольным уникальным номером (или временем или номером версии и т.д.):
<img src="image.png?80172489074" alt="a cool image" />
Это приведет к появлению нового запроса из-за другого URL.
У меня есть проблема, когда пользователи сообщают, что их изображения не загружаются, а старые все еще есть. При ближайшем рассмотрении появляются новые изображения, они имеют то же имя, что и прежнее. Что я делаю при загрузке, так это то, что я переименовываю изображения для целей SEO. Когда они удаляют изображение, старый индекс становится доступным и используется повторно. Поэтому он имеет то же имя изображения.
Есть ли способ (я подумал, может быть, может быть метатег для этого), чтобы сообщить браузеру не использовать его cahce?
Лучший ответ - переименовать образ в нечто совершенно новое. Я буду работать над этим, но в то же время это быстрое решение, когда я работаю над большей проблемой.
Добавить строку запроса с произвольным уникальным номером (или временем или номером версии и т.д.):
<img src="image.png?80172489074" alt="a cool image" />
Это приведет к появлению нового запроса из-за другого URL.
Это тяжело. Вы действительно хотите, чтобы изображения были кэшированы, но тогда вы не хотите кэшировать их, как только доступны новые:
Решение? Я могу подумать о двух хороших вариантах:
Вы можете поместить тег http-equiv
в тег <meta>
, который указывает браузеру не использовать кеш (или даже лучше - использовать его определенным образом), но лучше настроить сервер для отправки надлежащего http cache
заголовки. Проверьте статью о кешировании.
Тем не менее, некоторые браузеры могут не поддерживать весь стандарт http
, но я считаю, что это путь.
Добавить текущее время-время в изображение src:
<img src="yourImage.png?v=<?php echo Date("Y.m.d.G.i.s")?>" />
вы можете управлять поведением кэша, играя с заголовками HTTP.
установка заголовка expires в прошлом заставит браузер не использовать кешированную версию.
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Вы можете обратиться к RFC, чтобы получить более подробную информацию.
в PHP вы можете использовать этот трюк
<img src="image.png?<?php echo time(); ?>" />
Функция time() показывает текущую временную метку. Нагрузка каждой страницы различна. Таким образом, этот код обманывает браузер: он читает другой путь и "думает", что изображение изменяется, так как пользователь посетил сайт в последний раз. И он должен перезагрузить его, а не использовать кеш-память.
Перейти случайным образом. Просто используйте случайное число и добавьте его к имени файла изображения.
<img src="image.jpg?<?=rand(1,1000000)?>">
Мое любимое решение PHP:
<img src="<?php echo "image.jpg" . "?v=" . filemtime("image.jpg"); ?>" />
каждое изменение файла "создать" новую версию файла
Если вы посмотрите на данные, которые обмениваются между вашим браузером и сервером, вы увидите, что браузер отправит запрос HTTP HEAD для изображений. Результат будет содержать время модификации (но не фактические данные изображения). Убедитесь, что это время изменяется, если изображение изменяется на сервере, и браузер должен снова загрузить изображение.
В PHP вы можете отправить случайное число или текущую временную метку:
<img src="image.jpg?<?=Date('U')?>">
или
<img src="image.jpg?<?=rand(1,32000)?>">
это было не совсем нормально, я думаю, что это способ правильно его программировать.
<td><?php echo "<img heigth=90 width=260 border=1 vspace=2 hspace=2 src=".$row['address']."?=".rand(1,999)."/>" ?></td>