Наблюдение за кешированием

  Изучая ASP.NET я недавно наткнулся на определенные трудности с кэшированием страниц на прокси серверах. Задавал даже вопрос на форуме. Спасибо 2 Mike Chaliy предложенное решение вполне работоспособно. Но я нашел еще кое что на эту тему. Причем все обнаруженные мной особенности никак не проявляли себя при тестировании на локальной машине и в локальной сети.
  На своей домашней машине я установил IIS и разработал небольшое ASP.NET приложение для управления файлами на сервере и для отправки сообщений на сервер. Все работало замечательно на локальной машине во время отладки. И даже из локальной сети все тоже выглядело превосходно. На следующий день, воспользовавшись всеми прелестями ADSL от Укртелеком и DynamicDNS, я отправился в ХИРЭ "поуправлять" своей машиной удаленно. Выход в инет там организован через прокси, да еще и на кафедре стоит свой маленький прокси. С успехом загрузилась первая страничка, но потом все перестало работать, запросы до сервера не доходили а ответы грузились из кеша прокси, вобщем работать было невозможно. Нажимая сабмит я получал все ту же страничку. Псоле вопроса на форуме я вставил
    
    Response.Cache.SetCacheability(HttpCacheability.NoCache);

во все веб-формы в обработчик Page_Load. Желаемый результат был достигнут. Мне показалась странной необходимость вставлять эту строчку. Почитав документацию по ASP.NET я нашел там такую вот директиву

    <%@ OutputCache Duration="1" VaryByParam="None" %>

  Размещаете ее на каждой странице и все работает нормально, Duration задается в секундах. Есть еще куча параметров по настройке кеширования. Кешировать, оказывается, можно на сервере, на прокси или клиенте и исключительно на клиенте. Причем директива применима как к странице целиком, так и к UserControl.
  Порывшись в настройках IIS нашел там в разделе заголовков HTTP настройки срока действия содержимого и тут же установил настройку "истекает немедленно". Убрал все дополнительные настройки кэширования с веб-форм. Проверил все работает отлично, с одним только недостатком. Кнопочки на своей страничке я приукрасил повесив на них картинку и на onmouseover и onmouseout соответсвующие Java-скрипты меняющие картинку. Картинка естественно грузилась с моего сервера и при каждом срабатывании скрипта, а не при первом, кнопка становилась черной а потом загружалась соответствующая картинка, т.к. картинка подобно всему содержимому не кэшировалась браузером.  Вобщем отвратительно выглядело. В итоге я решил вернутся к варианту №2 указав соответствующие директивы в каждой форме и изменив настройку IIS на однодневный срок действия содержимого. Этот вариант работал наиболее приемлемо.
  Самое интересное что на локальной машине и в локальной сети ничего не кэшировалось вообще и все выглядело так, будто эти настройки не дают вообще никакого эффекта, хотя я и не протестировал все возможные параметры @OutputCache.
  Приложение было очень простым и то вызывало недоумение первые несколько секунд, представляю что будет с более сложными если не позаботится о правильном кэшировании.
Опубліковані 28-02-2007 11:22 від Dmitry Peleshenko

Коментарі

 

Mike Chaliy's Blog said:

Dmitry Peleshenko зустрівся з проблемою підгрузки rollover картинок. Я хочу розповісти про декілька технік

March 2, 2007 5:37 AM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.

Календар повідомлень

<February 2007>
SMTWTFS
28293031123
45678910
11121314151617
18192021222324
25262728123
45678910

Пошук

Go

Синдикація

SkinName:iroha_Blog2