Я обнаружил проблемы, если не включил заголовок «Content-Length:». Проблемы связаны с кешированием, прокси и браузером. В худшем случае браузер ожидает истечения времени ожидания для получения дополнительных данных.
Он в спецификации и решил все проблемы, поэтому я всегда включал его, даже если современные браузеры могут работать без него. Кто знает, может быть небольшая задержка, поскольку браузер не знает, когда он получил последний сегмент.
Другая проблема, которую я вижу здесь, заключается в том, что вы используете формат изображения .png.
Лучше создать определенную функцию для этой цели, чтобы вы могли использовать ее повторно.
function returnImage( $path ) {
header( 'Content-Type: image/' . substr($path, -3) );
header( 'Content-Length: ' . filesize( $path ) );
readfile( $path );
exit;
}
Я сделал здесь много предположений (например, файл существует и его расширение составляет 3 символа), но в моем опыте эта последовательность кажется серебряной пулей.