Если изображение формируется скриптом, возникает вопрос, как отменить кэширование в браузере, чтобы не нужно было нажимать ctrl-f5.

Нашлось вот такое простое решение:

echo '<img src="' . $QR . '?salt=' . rand() . '" />';

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