Удалить заголовок в PHP

чтобы разрешить кэширование сгенерированного PHP-файла, я хочу убедиться, что заголовок "Pragma: no-cache"не set. Однако, как удалить возможно уже установленный заголовок?

то есть мог бы возможно, что где-то в коде кто-то писал header('Pragma: no-cache'); и теперь я хочу убедиться, заголовок не отправляется.

достаточно ли этого:

header('Pragma:');

или есть что-то вроде delete_header() (что, по-видимому, будет недокументированные или скрытые)?

4 ответов


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" не определяется спецификацией - несмотря на широко распространенное мнение, что отправка заголовка "Pragma: No-cache" окажет некоторое влияние на браузер, на самом деле он почти повсеместно игнорируется (и никогда не возвращается любой установкой php, которую я использовал).

чтобы сказать браузеру, чтобы не кэшировать контент, выполняется через заголовок expires с датой в прошлом, заголовок управления кэшем со значением no-cache или (если вы хотите быть скрытым) с помощью "Varies: Date" заголовок. При отсутствии любого из этих типов заголовков клиент не должен кэшировать страницы.

и наоборот, если вы хотите, чтобы страница была кэшируемой, установите заголовки expires и cache-cntrol.

С.