Заранее извиняюсь за многословный вопрос.
Я действительно программист базы данных, но унаследовал поддержку классического приложения для интрасети ASP, которое недавно было перенесено с IIS 5 на новый сервер под управлением IIS 6. База пользователей насчитывает около десятка, и все используют IE 6.
Пользовательский интерфейс отображает иерархии элементов, возвращаемых из базы данных, используя комбинацию неупорядоченных списков HTML и JavaScript, чтобы скрыть / развернуть ветви по мере навигации пользователя.
Изображения отображаются рядом с членами списка с помощью CSS (с использованием list-style-image), используя разные изображения для каждого типа элемента. Количество различных типов элементов (и, следовательно, изображений) в иерархии варьируется от 2 до 10. Иерархии варьируются от 20 до 200 элементов.
Проблема:
После перехода на IIS 6 несколько пользователей столкнулись с проблемой, которая, по-видимому, вызвана неправильным применением изображений к одному или нескольким элементам в иерархии; список отображается правильно, но одно или несколько изображений отсутствуют, а нажатие на любую ссылку приводит к загрузке пустой страницы.
Анализ сетевого трафика с использованием Wireshark и журналов IIS показывает, что проблема не на стороне сервера - все содержимое было правильно передано клиенту.
Похоже, что проблема связана с кэшированием содержимого на клиенте: чаще всего оно затрагивает пользователей, которые ранее не использовали приложение на своем текущем ПК или не использовали его в течение некоторого времени.
Кроме того, я могу повторить проблему примерно одна попытка из трех, запустив сеанс, очистив кеш браузера и обновив страницу. Однако то же самое относится и к приложению, работающему на IIS 5, поэтому эта проблема могла существовать до перехода на IIS 6, но возникала реже.
Иногда, если я покидаю сеанс примерно на 20 минут, браузер, похоже, «находит» отсутствующие изображения, и все работает нормально.
Если доступ к приложению осуществляется через локальный прокси-сервер (я использовал Fiddler), проблема никогда не возникает, хотя журнал подключений Fiddler показывает одно или несколько подключений к серверу для извлечения изображений, которые были прерваны. Как и прежде, сетевой трафик показывает, что изображение было возвращено сервером. Однако использование прокси-сервера, по-видимому, позволяет IE находить другие успешно извлеченные копии изображения из кэша.
Я дошел до того, что исчерпал свои ограниченные знания по отладке проблем ASP / IIS.
Удаление списочных стилей-изображений из CSS устраняет проблему, но это должно быть последним средством, так как это делает приложение более сложным в использовании.
Любые предложения о том, как я могу действовать, будут с благодарностью приняты.
Редактировать
AnonJr предполагает, что это должно быть проблемой конфигурации клиента, так как все остальные компоненты работают нормально.
Я обесценил простую проблему конфигурации клиента, потому что это единственное приложение, затронутое описанной проблемой
Я проверил все параметры в разделе Инструменты> Свойства обозревателя> Временные файлы> Настройки без изменений в поведении.
Какие еще параметры конфигурации клиента я должен рассмотреть?
Редактировать 2 - решение
Принятый ответ подтолкнул меня к поиску известной проблемы с IE6, запрашивающей несколько копий изображений, когда HTML генерируется из клиентского скрипта - http://support.microsoft.com/default.aspx?scid=kb;en-us;319546.
В статье (заявив, что это поведение «разработано») предлагается обходной путь предварительного кэширования требуемых изображений путем загрузки их в невидимый DIV:
<DIV style='display:none'><IMG SRC='image.gif'></DIV>
Кажется, это работает для меня - я больше не могу воспроизвести проблему, очистив кеш браузера в середине сеанса, и трассировка Fiddler показывает, что каждое изображение запрашивается только один раз.
Я нашел одну оговорку, о которой раньше не знал; в кеше IE учитывается регистр, поэтому кэшированное изображение будет использоваться только в том случае, если регистр имени файла, указанного в невидимом DIV, совпадает с тем, который используется в другом месте страницы.