Чтобы разрешить кэширование PHP-файла, я хочу убедиться, что заголовок «Pragma: no-cache» не установлен. Однако как удалить уже установленный заголовок?
То есть, возможно, что где-то в коде кто-то написал header('Pragma: no-cache');
и теперь я хочу убедиться, что заголовок не отправлен.
Достаточно ли этого сделать:
header('Pragma:');
или есть что-то вроде delete_header()
(что, по-видимому, было бы недокументированным или хорошо скрытым)?
header_remove (), поскольку php 5.3
header_register_callback () также скоро появится
Я знаю, что этот вопрос старый и уже ответил. Но некоторые ответы могут оставить людей с неправильным впечатлением. Будьте уверены, что если ваши заголовки ответов содержат Pragma: no-cache
это фактически не позволит веб-браузеру кэшировать ресурс независимо от других настроек.
Поэтому, конечно, если вы используете хотя бы PHP 5.3, вы можете удалить заголовок Pragma
используя header_remove( 'Pragma' );
,
Вы можете переопределить ранее заданный заголовок, передав второй аргумент header()
:
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
Проверьте руководство для header()
Поведение заголовков «прагма» не определяется спецификацией – несмотря на широко распространенное мнение, что отправка заголовка «Pragma: No-cache» окажет некоторое влияние на браузер, на самом деле его почти повсеместно игнорируют (и он никогда не возвращается любую установку php, которую я использовал).
Чтобы сообщить браузеру, что кеш-контент не кэшируется, выполняется через заголовок expires с датой в прошлом, заголовок Cache-Control со значением без кэша или (если вы хотите быть подлым) заголовком «Varies: Date» , В отсутствие любого из этих типов заголовков клиент не должен кэшировать страницу.
Итак, наоборот, если вы хотите, чтобы страница была кешируемой, установите заголовки expires и cache-cntrol.
C.