OutputCache ведет себя странно - PullRequest
2 голосов
/ 23 марта 2009
protected void Page_Load(object sender, EventArgs e)
{Label1.Text = DateTime.Now.ToString();}

Если после того, как я скомпилировал это вновь созданное приложение, браузер B1 сначала запросить Cache.aspx, затем время, отображаемое на полученной странице 10,16: 20. Если, скажем, через 10 секунд я обновлю Cache.aspx B1 (нажав кнопку, чтобы вызвать обратную передачу), то время 10.16.30 будет отображаться, и на все последующие постбэки 10.16.30 всегда будут отображаться (до 1 час проходит). Если через несколько минут после того, как B1 впервые запросил Cache.aspx, браузер B2 также запрашивает ту же страницу, затем при получении страницы для первого время, Cache.aspx B2 покажет время 10.16.20, и на всех Время последующих обратных передач В2 10.16: 30 будет отображаться вместо.

А) Похоже, что Asp.net генерирует две кэшированные версии Cache.aspx (при этом код выполняется дважды), дается одна кэшированная страница браузерам, которые запрашивают Cache.aspx в первый раз, а второй кэшированная страница предоставляется браузерам, которые обновляют только свой Cache.aspx?

Б) Поскольку в моей книге никогда не упоминалось о таком поведении, мне интересно такое же поведение или моя среда в сети снова «уникальна»?

C) Создание двух копий одной страницы (таким образом, выполняя код дважды) кажется пустой тратой времени, так почему же Asp.Net работает так - должны быть какие-то рассуждения / преимущества за этим?

спасибо

Ответы [ 3 ]

2 голосов
/ 23 марта 2009

Полное предположение, но, по-видимому, кэш изолирован общим запросом (аргументы строки запроса и т. Д.) ... даже если "none" отключает пары ключ / значение, предположительно, "GET" просто по-прежнему считается в отличие от "POST" ???

Попробуйте использовать простые ссылки (<a href...> и т. Д.) Вместо кнопок ASP.NET.

1 голос
/ 23 марта 2009

Я только что попробовал и немного поиграл с этим, и, кажется, догадка Марка верна, кеш зависит от метода (GET / POST).

Но я помню, как делал маленькие демо-версии, подобные этой (с ASP.NET 2), и я совершенно уверен, что это не так, как раньше ...
Так что это может быть что-то, что изменилось в ASP.NET 3.5 и / или SP1, но я не мог найти упоминания об этом.

Что касается того, насколько это плохо, я не совсем уверен, я могу думать как о плюсах, так и о минусах.

0 голосов
/ 08 апреля 2009

если я попробую if (ispostback) начать response.cache.setcachebility (NoCache) конец

затем нажатие кнопки обновляет метку каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...