Кэширование изображений в ASP.NET - Тестирование CachingHandler

ОГЛАВЛЕНИЕ

Тестирование CachingHandler

Кэширование изображений легко протестировать с помощью простого сайта. Был добавлен проект сайта с именем CachingWebSite в решение Visual Studio, позволяющий проверить работу кэширования (скачать готовое решение). С одной стороны, сайт содержит страницу Default.aspx, содержащую тег изображения. Как видно, источник изображения заканчивается на .ashx.

<img src="/Portals/1/App_Themes/Standard/Images/LogoWithMenuBackground.png.ashx" />

С другой стороны, сайт содержит стандартную тему с таблицей стилей Style.css. В таблице стилей используется фоновое изображение. Снова источник изображения заканчивается на .ashx.

body 
{
  margin: 0px;
  padding: 0px;
  background-image: url(Images/MenuBackground.png.ashx);
  background-repeat: repeat-x;
}

В web.config сайта был вставлен специальный раздел для настройки CachingHandler и обработчика http для каждого расширения, точно как описано выше. Более того, был добавлен тег трассировки в раздел system.web, чтобы отслеживать каждый запрос к файлу.

<trace enabled="true" pageOutput="false" requestLimit="50" mostRecent="true" />

При запуске проекта сайта отображается страница Default.aspx с логотипом, определенным в Default.aspx, и с фоновым изображением, определенным в таблице стилей.

 

Чтобы просмотреть трассировку, откройте новую вкладку в IE и замените Default.aspx на Trace.axd в URL. Трассировка показывает, что потребовалось четыре запроса для отображения страницы Default.aspx. При первом запросе и каждый раз, когда пользователь нажимает F5, все файлы отправляются клиенту.

 

Переключившись обратно на первую вкладку, вы получите три варианта перезагрузки страницы. Вы можете
•    нажать F5
•    нажать ссылку "Перезагрузить страницу..."
•    нажать кнопку " Перезагрузить страницу..."

Нажатие на F5 перезагрузит все содержимое, тогда как нажатие ссылки или кнопки перезагрузит только содержимое, не закэшированное в клиенте. Ради следующего снимка экрана были нажаты ссылка и кнопка. Как видно, в трассировку добавились только запросы к Default.aspx и Style.css.

 

Если пользователь переходит на страницу с помощью гиперссылки или выполняет обратную передачу,  с сервера запрашиваются только файлы, не закэшированные в клиенте. Запросы № 5 и № 6 были вызваны нажатием ссылки, тогда как запросы № 7 и № 8 были вызваны нажатием кнопки.