Кэширование изображений в 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 были вызваны нажатием кнопки.