在URL后面添加一个随机数

时间:2011-09-15 14:18:32

标签: javascript jquery

我有一个使用jQuery和Ajax的站点来更改站点内容而无需重新加载页面。该网站包含我经常更改的内容。但不知何故,页面会保存在缓存中,因此它不会显示更改。

我尝试了几件事使浏览器不将网站保存到缓存中,如META和PHP。但它不起作用。

我认为这与页面总是有相同的URL这一事实有关,所以我想为它添加一个随机数:

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);

(这不是我的代码,用googlin找到它)但这只会添加我点击链接ID到URL。我不知道在哪里放“Math.random()”来添加随机数。

希望你能帮忙!

5 个答案:

答案 0 :(得分:7)

只需使用cache : false即可。 jQuery会自动为你的URL末尾添加一个时间戳,确保永远不会缓存ajax请求。

引用.ajax()

的API参考
  

高速缓存   默认值:true,false表示dataType'script'和'jsonp'

     

如果设置为false,它将强制浏览器不缓存请求的页面。将cache设置为false还会将查询字符串参数“_ = [TIMESTAMP]”附加到URL。

实施例

  1. 全局禁用所有未来ajax请求的缓存。见.ajaxSetup()

    $.ajaxSetup({
      cache: false
    });
    
  2. 禁用每个请求的缓存。见.ajax()

    $.ajax({
      url: "test.html",
      cache: false,
      success: function(html){
        $("#results").append(html);
      }
    });
    

答案 1 :(得分:3)

如果您正在使用jQuery的AJAX函数,请尝试在页面顶部设置$.ajaxSetup( { cache: false } ),让jQuery为您处理。

答案 2 :(得分:2)

与大多数提及的一样,您应该使用jQuery cache参数,但是为了您的信息,通常不使用Math.random但使用new Date().valueOf(),这是一个时间值非常多保证是独一无二的。

答案 3 :(得分:0)

window.location.hash = $(this).attr('href')
                            .substr(0,$(this).attr('href').length-5)
                            + Math.random();

答案 4 :(得分:0)

最佳选择是对请求使用时间戳:

window.location.hash = $(this).attr('href')
                            .substr(0,$(this).attr('href').length-5)
                            + timestamp;