В IIS 7.5, когда у меня не включено кэширование вывода, мой php-скрипт успешно устанавливает кэширование браузера в заголовке Cache-Control:
Cache-Control: max-age=43200,public
Тип контента: text/html
Истекает: ср, 30 мая 2012 г., 22:15:18 по Гринвичу
Сервер: Microsoft-IIS/7.5
X-Powered-By: PHP/5.4.3
Дата: среда, 30 мая 2012 г., 10:15:18 по Гринвичу
Соединение: закрыть
Content-Length: 5105
Однако, если я включу кэширование вывода для файлов .php, я получу следующий заголовок:
Cache-Control: no-cache,max-age=43200,public
Тип контента: text/html
Истекает: ср, 30 мая 2012 г., 22:25:34 по Гринвичу
Сервер: Microsoft-IIS/7.5
X-Powered-By: PHP/5.4.3
Дата: среда, 30 мая 2012 г., 10:25:34 по Гринвичу
Connection: close
(обратите внимание, что «no-cache» добавляется в Cache-Control перед работой моего php-скрипта)
Я обнаружил, что нет способа предотвратить добавление «no-cache» в клавишу Cache-Control, если кэширование вывода включено для типа файла. Я пытался сделать это в файле web.config:
<customHeaders>
<remove name="X-Powered-By" />
<remove name="Cache-Control" />
<add name="Cache-Control" value="public" />
</customHeaders>
Не работает. Почему это должно быть настолько взаимоисключающим? Я хотел бы включить кэширование вывода и кэширование браузера.