SammyJS IE setLocation缓存

时间:2014-10-15 16:24:42

标签: javascript date hash location sammy.js

当我用SammyJS触发设置位置时,IE似乎缓存了网址并且它没有触发路由。为了解决这个问题,我在路线的末尾添加了一个日期字符串:

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

是否有更好的方法可以在不添加日期字符串的情况下解决此问题?

1 个答案:

答案 0 :(得分:0)

IE9和之前将缓存GET请求。 (我不认为这发生在IE> = 10,但随意纠正我。)此外,如果内存服务,IE< = 9并不是唯一的浏览器 - Safari(没有版本)在我面前,但我不认为新版本会以这种方式表现)也会这样做。我认为这样做是为了节省往返和带宽。

也就是说,有几种选择可以解决它:

  • 你正在做什么。我已经看到在日期戳中添加一个查询字符串参数来获取请求来解决这个问题。它有效,但它可能会感到hacky。
  • 没有缓存标头。您可以发回过去没有过期日期的无缓存标头。这将强制浏览器重新请求资源。我不知道Sammy本身是否可以做到这一点,但是如果你要将GET发回服务器,那么它可能值得一试。 (如果有效,我会很好奇。)
  • 使用POST。 POST不会被缓存。不确定这是否是您特定情况下的选项,但值得一提。