Какие настройки в 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). содержание.