Мы используем тег динамического сценария с механизмом JsonP для достижения междоменных вызовов Ajax. Виджет интерфейса очень прост. Он просто вызывает поисковый веб-сервис, передавая критерии поиска, предоставляемые пользователем, и получает и динамически выводит результаты.Как я могу предотвратить кэширование IE от дублирования Ajax-запросов?
Примечание - Для тех, кто не знаком с Tag Dynamic Script с методом JSONP выполнения Ajax-подобных запросов к службе, которые возвращают Json отформатированные данные, я могу объяснить, как использовать его, если вы думаете, что может иметь отношение к проблеме.
Служба WCF размещена на IIS. Это Restful, поэтому первое, что мы делаем, когда пользователь нажимает на поиск, - это генерировать Url, содержащий критерии. Похоже, что это ...
Затем мы используем динамически созданный тег Html Script с атрибутом источника, установленного на указанную ссылку, чтобы сделать запрос на наши услуги. Результат возвращается, и мы обрабатываем его, чтобы показать результаты.
Все это работает отлично, но мы заметили, что при использовании IE услуга получает запрос от клиента Дважды. Я использовал Скрипач для мониторинга трафика, оставляя браузер и достаточно уверен, что я вижу два запроса со следующим URLs ...
- Запроса 1: https://.../service.svc?criteria=john+smith
- Запрос 2: https://.../service.svc?criteria=john+smith&_=123456789
Второго запроса был добавлен с каким-то идентификатором. Этот идентификатор отличается для каждого запроса.
Мое непосредственное размышление - это как-то связано с кешированием. Добавление случайного числа в конец URL-адреса является одним из классических подходов к отключению кеширования браузеров. Чтобы доказать это, я скорректировал настройки кэша в IE.
Я установил «Проверяют, что новые версии сохраненных страниц» имеют значение «Никогда». Это приводило к тому, что каждый запрос делался только один раз. Один со случайным числом на конце.
Я установил для этого значения настроек значение по умолчанию «Автоматически», и запросы сразу стали снова отправляться.
Интересно, что я не получаю обе заявки на клиента. Я нашел это reference, где кто-то предполагает, что это может быть ошибка с IE. Тот факт, что это не происходит для меня в Firefox, поддерживает эту теорию.
- Может ли кто-нибудь подтвердить, является ли это ошибкой с IE? Это может быть по дизайну.
- Кто-нибудь знает, как я могу остановить это?
Некоторые из наиболее расплывчатых поисков, которые будут выполняться моими пользователями, занимают достаточный ресурс обработки, чтобы удвоить что-либо очень плохую идею.Я действительно хочу, чтобы избежать этого, если вообще возможно :-)
Похож на очень хорошее начало в правильном направлении для меня. Я соглашусь скоро, если это поможет. Спасибо за быстрый ответ! –