управление кешем не работает - PullRequest
2 голосов
/ 12 ноября 2010

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

Я попробовал следующее, но оно не работает, так как я все еще могу вернуться и увидеть кэшированную копию. Вот что я использую до сих пор.

    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

Ответы [ 2 ]

5 голосов
/ 12 ноября 2010

Вы пробовали что-то более всестороннее?

Expires: Sat, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

Источник: http://www.php.net/manual/en/function.session-cache-limiter.php

0 голосов
/ 12 ноября 2010

Я не уверен, будет ли это работать для всей страницы, но это стоит попробовать.

Мы обслуживаем динамические изображения, которые имеют одно и то же имя файла, снова и снова. Очевидно, что кэширование этих изображений будет плохим, плохим, плохим (и на самом деле полностью разрушит наше приложение).

Итак, мы отправляем эти три заголовка в браузер, и он прекрасно работает, чтобы полностью исключить все кэширование изображений во всех браузерах:

//Prevent the image from caching, so it is created fresh each time.
app.Response.AddHeader("pragma", "no-store,no-cache"); // //HTTP 1.0
app.Response.AddHeader("cache-control", "no-cache, no-store, must-revalidate, max-age=-1"); // HTTP 1.1
app.Response.AddHeader("expires", "Mon, 14 Jul 1789 12:30:00 GMT"); // Date in the past

Примечание. Мы протестировали МНОЖЕСТВО вариаций, но это были три основных компонента магического рецепта, предотвращающие кэширование изображений на стороне клиента. Возможно, вам удастся использовать их для всей страницы, но я не проверял этот конкретный сценарий.

...