Отмена кэширования загруженного поверх старого изображения (фотографии)
Как увидеть изображение только что загруженное поверх другого.
© 2007-01-08, Игорь Гузей (Guzei.com)
Проблема
Сделал анкету, где можно загружать фотографию. Загрузил, посмотрел, захотел загрузить другую. Загрузил, но вижу предыдущую.
Решение
С помощью PHP добавляем случайный параметр к имени фотогрфии и гарантированно видим только что загруженную.
1. Сбрасываем кэш полностью: echo '<img src="img.jpg?'.time().'">'; 2. Сбрасываем кэш полько при изменении файла: echo '<img src="img.jpg?'.filemtime('img.jpg').'">';
т.е. добавляем парамерт сбрасывающий кэш только в случае изменеия файла. Таким образом кэширование продолжает работать.
Тернии
После загрузки новой фотографии поверх старой не помогает ничего. Ни обновление страницы, ни постановка тэгов ответственных за кэш, ни прописывание php-заголовков типа:
header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
которые рекомендованы в PHP-документации.
При обновлении страницы через несколько минут новая фотография появляется сама собой, но сразу же после загрузки увидеть то, что загрузилось получилось только способом указанным в решении.