В некоторых случаях мой PHP скрипт предоставляет большой двоичный файл. Я хочу поддержать заголовок if-updated-Since .
Во время моих тестов я обнаружил неожиданное поведение: если я установил заголовок ответа last-updated в PHP затем Apache, кажется, обрабатывает запросы с заголовком if-Modified-начиная с автоматически («200 OK» + содержимое или «304 Не изменено» без содержимого). Он даже отменяет '200 OK' в header("Last-Modified: $lastModifiedValue GMT", true, 200);
.
Я пытался найти документацию об этом поведении, прежде чем решить, положиться ли мне на него или мне следует реализовать блок if(isset($headers['If-Modified-Since'])){...}
.
Любой опыт, совет или подсказка о том, как официально это поведение будет приветствоваться.
Полный тестовый фрагмент:
$lastModifiedValue = gmdate('D, d M Y H:i:s', filemtime($path));
header('Content-Type: application/octet-stream');
header("Last-Modified: $lastModifiedValue GMT", true, 200);
header('Content-Length: ' . filesize($path));
header('Content-Disposition: attachment; filename="binary-data.bin"');
ob_end_clean();
$fileHandle = fopen($path, "rb");
fpassthru($fileHandle);
fclose($fileHandle);
exit;
(Сервер работает на Apache: 2.2, PHP: 5,6)