Почему делает Ответ. Перенаправление иногда вытягивает от кэша?

Я заметил что когда я Ответ. Перенаправление к .aspx странице, это иногда отображает кэшируемую страницу вместо того, чтобы на самом деле выполнить страницу и вытянуть новые данные из базы данных.

Я не использую кэширование вывода или что-либо специальное в .NET здесь - это - CRM, и кэширование или происходит на клиенте или, возможно, более вероятно, автоматически в IIS.

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

Я сделал немного рытья, и некоторые люди обходят это при помощи Сервера. Передача (который на самом деле ведет себя по-другому, чем Ответ. Перенаправление и некоторые детали не всегда желательно), и некоторые другие люди сказали для установки Ответа. Кэш. SetCacheability (HttpCacheability. NoCache) на странице, где я не хочу кэшироваться.

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

Какие-либо мысли?

5
задан Brian MacKay 18 January 2010 в 20:01
поделиться

2 ответа

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

Итак, да, вам нужно что-то вроде: -

Response.Cache.SetCacheability(HttpCacheability.NoCache) 

, чтобы убедиться, что запрос (перенаправление или иначе) не просто использует кэшированную версию.

6
ответ дан 13 December 2019 в 19:27
поделиться

Ответ .edirect Отправляет ответ на браузер, который сообщает, что запрашиваемый объект переместился и предоставляет ему новое местоположение. В этом случае, если вы перенаправляетесь на «Redirect.aspx», если в браузере есть этот элемент в кэше, он покажет его оттуда при условии, что критерии кешимости выполнены.

Вы упоминаете Response.transfer, но вы имеете в виду Server.transfer. Это механизм сервера для передачи контекста выполнения на новую страницу. Итак, пользователь запросы «Main.aspx» в вашем приложении. На этой странице вы сервер.Трансфер для «Transferred.aspx». На стороне сервера это тот же запрос, поэтому, когда вывод отображается, браузер клиента покажет URL-адрес «Main.aspx», а не «Transferred.aspx».

Для суммирования - Redirect = 2 запроса, передача = 1 запрос. Надеюсь, это поможет.

И да, вам нужно установить кэшируемость, если вы хотите, чтобы страницы всегда позвонили на сервер. По умолчанию ASPX не имеет специального поведения браузера, поскольку он просто отправляет HTML. Вы можете установить:

Ответ. Например. Expires = -1.

5
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: