Как проверить, отключено ли кэширование (IE7)?

Я разрабатываю приложение, которое использует PDFLib для обслуживания динамических PDF-файлов моих пользователей, обобщающих их учетные записи, и мне необходимо убедиться, что эти страницы не кэшируются (передаются некоторые конфиденциальные данные, и я не могу хранить их в кеше по соображениям безопасности ).

Я попытался использовать следующий код:

Header("Expires:-1");
Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-store, no-cache, must-revalidate");
Header("Cache-Control: post-check=0, pre-check=0", false);
Header("Pragma:no-cache");

Во-первых, у меня нет надежного способа проверить, что IE7 не кэширует страницу, поэтому мой первый вопрос: «Как мне проверить, что мои заголовки без кэширования работают?»

Во-вторых, после того, как я добавил эти строки в свой код, PDF перестал отображаться в IE7. Когда я удаляю линии, все работает нормально. У кого-нибудь есть идеи, как избежать такого поведения?

Заранее спасибо!

Изменить: ответ на первый вопрос дан; Я должен был спросить их отдельно. Мой второй вопрос: «Как мне избежать поведения IE7, когда моя страница PDFLib не отображается при отправке заголовков без кеша?» все еще активен.


person Matt    schedule 24.07.2012    source источник
comment
Кажется, вы установили два заголовка cache-control. Вторая перезаписывает первую?   -  person starbeamrainbowlabs    schedule 24.07.2012
comment
@starbeamrainbowlabs нет, второй параметр второго заголовка управления кешем гарантирует, что первый заголовок управления кешем не будет перезаписан.   -  person Matt    schedule 24.07.2012
comment
Я этого не знал! Спасибо! :)   -  person starbeamrainbowlabs    schedule 24.07.2012
comment
Да, мне пришлось искать его в документации по PHP, когда я впервые увидел фрагмент (из поиска Google). Он добавляет значения к заголовку (конечный результат эквивалентен написанию Header(Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0) php.net/manual/en/function.header.php   -  person Matt    schedule 24.07.2012
comment
Я должен проверить документы, прежде чем комментировать;)   -  person starbeamrainbowlabs    schedule 24.07.2012
comment
Это тоже всегда мой второй инстинкт. Я обычно спрашиваю, а потом смотрю. Я не знаю, почему это так.   -  person Matt    schedule 24.07.2012
comment
Я хотел бы знать, почему люди проголосовали за этот вопрос. Мне кажется, что он следует всем рекомендациям, изложенным в этой статье.   -  person Matt    schedule 02.08.2012
comment
Я полностью согласен с вами. Вы должны быть вынуждены указать причину отрицательных голосов.   -  person starbeamrainbowlabs    schedule 02.08.2012
comment
@starbeamrainbowlabs или хотя бы +1 к чужому комментарию.   -  person Matt    schedule 02.08.2012


Ответы (2)


Чтобы проверить, кэширована ли страница, измените ее и обновите. Обратите внимание, что заголовок Expires должен содержать дату, поэтому значение -1 недопустимо. Вместо этого попробуйте использовать дату в прошлом.

person Michael Mior    schedule 24.07.2012
comment
Если я не ошибаюсь, -1 оценивается как недопустимая дата, которая автоматически принимается браузером как дата в прошлом, верно? - person Matt; 24.07.2012
comment
Кроме того, да, это очевидный ответ; Мне было интересно, есть ли какие-либо инструменты разработчика (в частности, для IE7), чтобы мне не приходилось проходить цепочку команд x раз, чтобы продолжать фиксировать и отправлять мой код на тестовый сервер, просто чтобы проверить, чтобы увидеть если моя страница не кэшируется. - person Matt; 24.07.2012
comment
@Matt Возможно, хотя я всегда использовал даты в далеком будущем, и я думаю, что в этом могут быть ошибки. Если вы хотите проверить конкретное поведение IE, вам придется загрузить страницу в IE. - person Michael Mior; 24.07.2012
comment
Вот что я понял; Я просто хотел попытаться избежать циклического рывка модификации, фиксации, проверки кода, отправки, тестирования, повторения. - person Matt; 24.07.2012
comment
@Matt Нет локальной среды разработки? :( - person Michael Mior; 25.07.2012
comment
конечно у меня есть среда разработки, но я не могу тестировать в вакууме — мы разрабатываем на Windows-боксах, а разворачиваем на Linux. - person Matt; 25.07.2012
comment
Говоря о среде разработки, я имею в виду среду, работающую примерно на том же стеке, что и производственные серверы. - person Michael Mior; 25.07.2012
comment
в моей компании существует строгий процесс получения кода на тестовом сервере, и для его размещения требуется некоторое время, вот и все. - person Matt; 25.07.2012

Я нашел Панель отладки http://www.debugbar.com/download.php для IE 7, который показывает мне все заголовки и информацию о кэшировании. Я использую вкладку HTTP(S), выбираю свой документ и просматриваю «Информация и кэш» ниже. Действительно легко, как только я освоился.

person Matt    schedule 25.07.2012