PHP и apache не будут кэшировать файл PHP по умолчанию. Я недавно столкнулся с этим сам. Однако вы можете вернуть 304, если хотите, и это решит проблему. Я сделал это с помощью etags.
Просто отправьте браузеру первый раз хэш etag при первом посещении.
header('Etag: '.$eTagHash);
Затем проверьте, есть ли etag, если это так, скажите браузеру, что 304 не изменен.
if(isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if(trim($_SERVER['HTTP_IF_NONE_MATCH']) == trim($eTagHash)){
header("HTTP/1.1 304 Not Modified");
exit;
}}
Вы можете установить $ eTagHash на что угодно. Вы должны включить etags на сервере apache (большинство так и делает).
Если вам когда-нибудь понадобится перенаправить куда-то еще, просто измените хэш etag, и, если он не совпадает, вы можете снова отправить браузеру etag заголовка с новым значением.