有没有办法阻止缓存某些URL?

时间:2011-09-13 00:37:50

标签: jquery ajax ruby-on-rails-3 caching tokenize

我的网站上有一个自动完成框。我正在使用Tokeninput。如果没有结果,我有用户点击链接添加它。问题是如果他们已经输入了已经缓存的确切查询,那么他们必须刷新页面以在下拉列表中查看结果。反正有没有阻止某些ajax调用的缓存?

2 个答案:

答案 0 :(得分:3)

jQuery.ajax中的cache选项设置为false。这将阻止AJAX调用的缓存。它的工作原理是添加一个名为_的新查询字符串参数,该参数设置为当前时间戳。

答案 1 :(得分:2)

在所请求的URL的末尾添加唯一的查询参数。通常这是通过随机数或时间戳完成的。我更喜欢时间戳。

function makeURLUnique(url) {
    var parm = "unique=" + Date.now();    // get timestamp in milliseconds
    if (url.indexOf("?") == -1) {
        parm = "?" + parm;                // no question mark, add one
    } else if (!url.match(/\?$/)) {
        parm = "&" + parm;                // no question mark at the end, must be other parms
    }
    return(url + parm);
}

如果您使用jQuery来获取URL,您可以使用jQuery选项关闭缓存,这将完全按照上述描述执行,但会自动为您执行:

 $.ajax(yourURL, {cache: false}).then(...);