在URL后面添加一个随机数

Mau*_*eum 2 javascript jquery

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

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

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

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
Run Code Online (Sandbox Code Playgroud)

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

希望你能帮忙!

Sah*_*hoo 7

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

引用API参考 .ajax()

cache默认值:true,false表示dataType'script'和'jsonp'

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

例子

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

    $.ajaxSetup({
      cache: false
    });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 禁用每个请求的缓存.看到.ajax()

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

  • 虽然我赞同你的答案,但重要的是要知道这会增加流量.如果_often_更改并不意味着_always_更改并且响应明显大于纯http标头响应(大多数是),则可以使用ETag(例如`If-Modified-Since`)来节省大量流量.Http提供的东西比满足眼睛的东西要多. (2认同)