jQuery ajaxSetup({cache:true})通常有用吗?

9 ajax jquery caching

如果我在本地上下文中断言ajax缓存设置,jQuery 1.4.2会省略时间戳 GET参数(以阻止浏览器缓存):

$.ajax({
    url: searcher, 
    data: keys,
    cache: true,
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        // something
    });
Run Code Online (Sandbox Code Playgroud)

但如果我将设置从那里移出并进入全局上下文,它包括时间戳:

$.ajaxSetup({cache: true});
Run Code Online (Sandbox Code Playgroud)

此外,如果我让默认应用,jQuery设置时间戳,这似乎与手册不匹配.

你经历过同样的经历吗?

来自服务器的HTTP缓存控制响应头是否会影响此jQuery功能?

Jam*_*ruk 9

看起来很有效.以下三个ajax调用仅在第二种情况下将时间戳作为参数传递.timestamp参数的名称不是时间戳,而是下划线.

    $.ajax({ url: '/?=testDefault',
    data: { 'cache': 'default' }
    });//no timestamp

    $.ajaxSetup({ cache: false });
    $.ajax({ url: '/?=testFalse/',
    data: { 'cache': 'false' }
    });//yes, a timestamp

    $.ajaxSetup({ cache: true });
    $.ajax({ url: '/?=testTrue/',
    data: { 'cache': 'true' }
    }); //no timestamp
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你使用的是自动完成插件吗?默认情况下会传递timestamp参数.你可以通过传递这样的东西,使用extraParams选项覆盖它.

extaParams: {timestamp:'cache'}
Run Code Online (Sandbox Code Playgroud)