在URL后添加随机数

Adding a random number after the URL

本文关键字:随机数 添加 URL      更新时间:2023-09-26

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

我尝试了一些事情,使浏览器不保存网站到缓存像METAs和PHP。但是这行不通。

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

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

(这不是我的代码,发现它与一些谷歌),但这只增加了链接ID我点击到URL。我不知道在哪里放"Math.random()"来添加一个随机数。

希望你能帮忙!

只用cache : false。jQuery将自动在URL的末尾添加时间戳,以确保ajax请求永远不会被缓存。

引用.ajax()的API参考

缓存默认值:true, false对于数据类型'script'和'jsonp'

如果设置为false,它将强制浏览器不缓存请求的页面。将缓存设置为false还会向URL添加一个查询字符串参数"_=[TIMESTAMP]"。

例子
  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;