2014-10-15 2 views
0

Когда я запускаю заданное местоположение с помощью SammyJS, IE, похоже, кэширует URL-адрес и не запускает маршрут. Чтобы обойти эту проблему, я добавил строку даты до конца моего маршрута:SammyJS IE setLocation Caching

var d = Date.now(); 
sammy.setLocation("#location" + d); 

есть лучший способ решить эту проблему без добавления строки даты?

ответ

0

IE9 и до этого будут кэшировать запросы GET. (Я не думаю, что это происходит в IE> = 10, но не стесняйтесь исправить меня.) Кроме того, если память обслуживается, IE < = 9 - это не единственный браузер, который делает это - Safari (не имеют версий в но я не думаю, что новые версии будут вести себя таким образом) также это сделает. Я думаю, что это сделано, чтобы сохранить круглые поездки и пропускную способность.

Тем не менее, есть несколько вариантов, чтобы попытаться взломать вокруг него:

  • Что вы уже делаете. Я видел привязку к дате в качестве параметра querystring для запроса получения, чтобы обойти эту проблему. Он работает, но он может чувствовать себя взломанным.
  • Нет заголовка кэша. Вы можете отправить обратно заголовок без кэша с датой истечения в прошлом. Это заставит браузер повторно запросить ресурс. Я не знаю, справляется ли это с самим Сэмми, но если вы отправляете GET обратно на сервер, это может стоить того. (Мне было бы интересно, если это сработает.)
  • Используйте POST вместо этого. POST не кэшируются. Не уверен, что это вариант в вашем конкретном сценарии, но стоит упомянуть.