Страница не кэширует себя в ASP.NET C # - PullRequest
0 голосов
/ 02 апреля 2010

Я иногда нахожу, что мне нужно нажать клавиши CTRL + REFRESH (или просто REFRESH BUTTON) для обновления страниц. Я подумал, что это может быть проблема с использованием панели обновления AJAX и прочего, но это также происходит на страницах, где нет частичного рендеринга AJAX. Я также удалил if (! IsPostBack), и все же мне нужно обновить страницу для обновления содержимого.

Это связано с кешем?

Кто-нибудь знает, как исправить это? Я считаю, что это происходит только с IE 7 (который я использую). Я попробовал ту же функцию с Chrome, и она сработала так, как и предполагалось.

РЕДАКТИРОВАТЬ: К сожалению, это не так просто, как установка для кэширования заголовка в 0 или в IE получение последней страницы всегда при загрузке страницы. Я сделал это, и та же самая проблема случается.

Например, на одной части моего сайта вы можете изменить изображение профиля. Если я решу удалить изображение профиля (которое затем следует установить на изображение по умолчанию), оно только удалит изображение (но не отобразит изображение по умолчанию). Страница загружается снова, но она все еще ссылается на изображение, которое я удалила (поэтому я получаю X за изображение). Мне нужно перейти на другую страницу, а затем вернуться на страницу профиля, чтобы увидеть изображение по умолчанию. CTRL + REFRESH также работает.

Обратите внимание, что данная проблема возникает во всех браузерах (включая Chrome).

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

Ответы [ 3 ]

1 голос
/ 02 апреля 2010

Изменение настроек кэша вашего браузера решит проблему локально, но, чтобы исправить ее для общего случая, добавьте заголовок «Expires: 0» на вашу исходящую страницу, что предотвратит кеширование браузерами вообще.

Чтобы сделать это в C #, добавьте этот код в событие загрузки страницы:

Response.AddHeader("Expires", "0");
0 голосов
/ 02 апреля 2010

Вы также можете установить политику кэширования для объекта ответа или установить для тега сущности каждый раз что-то другое ...

http://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.aspx

0 голосов
/ 02 апреля 2010

Ctrl + refresh заставляет IE перезагрузить страницу с сервера, а не использовать локально кэшированную версию. Сначала проверьте настройки вашего браузера: Настройки - Общие - История просмотра. «Проверять наличие новых версий сохраненных страниц» следует установить на «Автоматически». Затем проверьте, добавляете ли вы какие-либо заголовки «expires» на свои страницы.

...