Какие настройки в IIS могут вызывать загрузку XAP каждый раз при доступе к странице из свежего IE? - PullRequest
4 голосов
/ 21 июля 2011

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

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

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

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

1 Ответ

4 голосов
/ 22 июля 2011

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

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

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

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

...