我有一个使用jQuery和Ajax的站点来更改站点内容而无需重新加载页面。该网站包含我经常更改的内容。但不知何故,页面会保存在缓存中,因此它不会显示更改。
我尝试了几件事使浏览器不将网站保存到缓存中,如META和PHP。但它不起作用。
我认为这与页面总是有相同的URL这一事实有关,所以我想为它添加一个随机数:
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
(这不是我的代码,用googlin找到它)但这只会添加我点击链接ID到URL。我不知道在哪里放“Math.random()”来添加随机数。
希望你能帮忙!
答案 0 :(得分:7)
只需使用cache : false
即可。 jQuery会自动为你的URL末尾添加一个时间戳,确保永远不会缓存ajax请求。
引用.ajax()
高速缓存 默认值: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);
}
});
答案 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;