Какие настройки в IIS могут вызывать загрузку XAP каждый раз при доступе к странице из свежего IE?

У меня есть пример программы, которая делает только Hello World. Я открываю IE и захожу в среду разработки и получаю доступ к Silverlight, он загружает XAP первый раз, а затем, если я закрываю IE и открываю снова, XAP не загружается. Поскольку нет никаких изменений, я ожидаю, что это не загрузить.

После его развертывания в среде QA я впервые открываю IE, он загружает XAP, как и ожидалось. Теперь закройте IE и откройте снова, я ожидаю, что он не загружает XAP, но он действительно загружает XAP снова. Но если бы я сделал обновление на странице, он не загружает XAp. Так что это происходит только на Fresh IE, открытом в нашей среде QA.

Все вышеперечисленные тесты выполняются в одном окне с одинаковыми настройками IE. Таким образом, нет проблемы с кэшем на стороне клиента. Я проверил дату и время на серверах, чтобы увидеть, есть ли какая-либо разница, как указано в Silverlight. XAP загружается при каждой ссылке, и наши серверы имеют одинаковую дату и время.

Кто-нибудь знает, как предотвратить загрузку IIS каждый раз?

1 ответ

Решение

Настройки по умолчанию в IE означают, что свежий экземпляр IE всегда будет пытаться получить каждый уникальный URL-адрес при первом его обнаружении. IE делает это, даже если заголовки кэша, отправленные с ресурсом в последний раз, когда он был выбран, будут указывать, что ресурс все еще свежий.

Однако IE отправит If-Modified-Since и / или If-None-Match когда он повторно запрашивает ресурс, копия которого находится в его кэше. Следовательно, сервер имеет возможность ответить 304 Not ModifiedВы уверены, что этого не происходит? 304 не имеет тела объекта и поэтому является дешевым ответом.

Также обратите внимание, что IE может сделать несколько странных эвристических решений, если серверу не удается отправить какие-либо заголовки элемента управления кэшем с ресурсом. Один из этих вариантов - когда ресурс достаточно велик, кэширование не выполняется.

Если вы еще этого не сделали, я бы порекомендовал вам установить разумный срок действия в папке ClientBin в диспетчере IIS (в IIS7 выберите папку ClientBin, выберите "Заголовок ответа HTTP", откройте "Установить общие заголовки...", включите Expire Web). содержание.

Другие вопросы по тегам