Intereting Posts
Как сортировать пользовательские столбцы в виджетах GridView в Yii 2? Как получить контент метаописания с помощью Goutte Как сортировать многомерный массив в PHP Регулярное выражение для соответствия ключевому слову, если оно не заключено в фигурные скобки Безопасное FTP-соединение с использованием PHP Как получить Dropzone.js для загрузки файлов только при нажатии кнопки отправки? Загрузить DOC или PDF с помощью PHP Facebook SDK для ошибки PHP – CurlException: 35: ошибка: 14094410: SSL-процедуры: SSL3_READ_BYTES: sslv3 отказ от рукопожатия Извлечь текст из строки до ":", если существует? Сбор значений столбцов в массив Улавливание ошибок PHP mail () и отображение разумного сообщения об ошибке пользователя PHP ajax database: как передать две переменные и получить данные из них в разных вариантах? Практика базы данных и ООП в PHP Отправка параметров POST с помощью Postman не работает, но отправка параметров GET PHP-композитор всегда загружает класс

file_get_contents нет кеширования?

Я использую file_get_contents () для загрузки динамического изображения с внешнего веб-сайта.

Проблема в том, что изображение было обновлено на удаленном веб-сайте, но мой скрипт все еще отображает старое изображение. Я предполагаю, что сервер кэширует изображение где-то, но как я могу заставить сервер очистить кеш и использовать обновленное изображение при получении файла с файлом_get_contents?

На моей локальной машине мне пришлось сделать CTRL + F5, чтобы принудительно обновить изображение.

Я также попытался добавить кеш-заголовок к моему скрипту, но он не сработал:

$image = imagecreatefromstring(file_get_contents($path)); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé header('Content-type: image/png'); imagepng($image); exit(); 

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

Тем не менее, есть простой способ решить проблему. Предположим, вы используете что-то вроде http://domain.com/path/to/image в своем $path . Затем просто выполните:

 $image = imagecreatefromstring(file_get_contents($path.'?'.mt_rand())); 

– Идея состоит в том, чтобы добавить некоторое случайное значение в запрос GET и предотвратить его кэширование.