在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。
例子
-
全局禁用所有未来ajax请求的缓存。 请参阅
.ajaxSetup()
$.ajaxSetup({ cache: false });
-
禁用每个请求的缓存。 见
.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;