Я заметил что когда я Ответ. Перенаправление к .aspx странице, это иногда отображает кэшируемую страницу вместо того, чтобы на самом деле выполнить страницу и вытянуть новые данные из базы данных.
Я не использую кэширование вывода или что-либо специальное в .NET здесь - это - CRM, и кэширование или происходит на клиенте или, возможно, более вероятно, автоматически в IIS.
Никогда нет включенного querystring, между прочим. Я передаю ключ через сессию. Я знаю, что, если бы я использовал querystring, он, вероятно, частично обошел бы проблему кэша, но это не опция в этом случае, и так или иначе что я действительно хочу, более глубокое понимание того, что продолжается.
Я сделал немного рытья, и некоторые люди обходят это при помощи Сервера. Передача (который на самом деле ведет себя по-другому, чем Ответ. Перенаправление и некоторые детали не всегда желательно), и некоторые другие люди сказали для установки Ответа. Кэш. SetCacheability (HttpCacheability. NoCache) на странице, где я не хочу кэшироваться.
Я хотел бы лучшее понимание того, что продолжается здесь, и возможно лучшая практика - с одной стороны, я думал, что .aspx страницы всегда отмечались, чтобы не кэшироваться.Правильно?
Какие-либо мысли?
по умолчанию заголовки, предназначенные для управления кэшированием. Это оставляет клиента, чтобы составить свои собственные правила о том, как кэшировать отправленное контент.
Итак, да, вам нужно что-то вроде: -
Response.Cache.SetCacheability(HttpCacheability.NoCache)
, чтобы убедиться, что запрос (перенаправление или иначе) не просто использует кэшированную версию.
Ответ .edirect Отправляет ответ на браузер, который сообщает, что запрашиваемый объект переместился и предоставляет ему новое местоположение. В этом случае, если вы перенаправляетесь на «Redirect.aspx», если в браузере есть этот элемент в кэше, он покажет его оттуда при условии, что критерии кешимости выполнены.
Вы упоминаете Response.transfer, но вы имеете в виду Server.transfer. Это механизм сервера для передачи контекста выполнения на новую страницу. Итак, пользователь запросы «Main.aspx» в вашем приложении. На этой странице вы сервер.Трансфер для «Transferred.aspx». На стороне сервера это тот же запрос, поэтому, когда вывод отображается, браузер клиента покажет URL-адрес «Main.aspx», а не «Transferred.aspx».
Для суммирования - Redirect = 2 запроса, передача = 1 запрос. Надеюсь, это поможет.
И да, вам нужно установить кэшируемость, если вы хотите, чтобы страницы всегда позвонили на сервер. По умолчанию ASPX не имеет специального поведения браузера, поскольку он просто отправляет HTML. Вы можете установить:
Ответ. Например. Expires = -1.