Есть ли способ предотвратить кэширование определенных URL-адресов? - PullRequest
1 голос
/ 13 сентября 2011

У меня на сайте есть автозаполнение. Я использую Tokeninput . Когда нет результата, у меня есть пользователи, которые нажимают на ссылку, чтобы добавить ее. Проблема в том, что, если они уже набрали точный запрос, который уже был кэширован, им нужно обновить страницу, чтобы увидеть результат в раскрывающемся списке. Есть ли способ предотвратить кэширование определенных вызовов ajax?

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Установите параметр cache в jQuery.ajax на false.Это предотвратит кеширование вызовов AJAX.Он работает путем добавления нового параметра строки запроса с именем _, который устанавливается на текущую метку времени.

2 голосов
/ 13 сентября 2011

Добавьте уникальный параметр запроса в конец запрашиваемого 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(...);
...