Кэшируются изображения через $.post, как исправить?

Рейтинг: 0Ответов: 1Опубликовано: 22.08.2023

Всем привет. Хочу преобразовать pdf в jpg с помощью Imagick(), но через ajax. Т.е. отправляю запрос в обработчик, там происходит изменение PDF на JPG, после обработчик возвращает мне на HTML страницу ссылку на сохраненную картинку и вставляет в верстку. Всё работает, но вот только как я понимаю КЭШ сохраняется, и она не обновляется, если что-то изменить без перезагрузки страницы. Как это можно исправить?

Пробовал в обработчике: clearstatcache(); - эффекта ноль Также пробовал метатеги на странице:

Тоже не помогает… Подскажите как это исправить?

Мой код

#Обработчик 
$im = new Imagick(); 
$im->setResolution(300, 300); 
$im->readimage('mypdf_file.pdf[0]'); 
$im->setImageFormat('jpeg'); 
$im->writeImage('../catalog/thumb.jpg'); 
$im->clear(); 
$im->destroy(); 
clearstatcache(); 
$url_img = '/catalog/thumb.jpg'; 
$url_result = <img src="' . $ url_img . '" alt=""> 
echo $url_result;

И на клиенте

#На стороне клиента 
$('#result_box').html('') 
setTimeout(() => { 
$('#result_box').html(data) 
}, 200)

В общем первая картинка загружается, дальше запрос проходит, но не меняется… Еще прочитал что параметр кэша не нужен в запросе, т.к. страницы с постзапросом никогда не кэшируются.. (документация Jquery) как в итоге сделать?

PS: видел решение, но по мне костыли, это создать рандомный гет параметр, и каждый раз возвращать разный гет, таким образом должно все работать, но все же, хотелось бы без него реализовать…

Ответы

▲ 2

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

Ничего страшного не случится, если написать что-то вот такое:

$url_img = '/catalog/thumb.jpg?t=' . time();