在URL后面添加一个随机数

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

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

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

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

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

希望你能帮忙!

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

引用.ajax()的API参考

cache默认值: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); } }); 

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

与大多数提到的一样,您应该使用jQuery cache参数,但是对于您的信息,它通常不使用Math.random但使用new Date().valueOf() ,这是一个非常保证唯一的时间值。

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

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

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