Загрузка из кеша - это функция, а не ошибка. Чтобы победить его, добавьте параметр очистки кэша, такой как
xxx= <new Date().getTime();> // note, this is meta-code.
или просто ведите счетчик. В любом случае идентичные URL-адреса GET (включая параметры) приведут к возврату кэшированного значения. Таким образом, вы должны заставить URL-адреса быть разными.
Или используйте POST вместо GET.
Другими словами, основная идея вызовов HTTP GET состоит в том, что они идемпотентны . Это означает, что вызов (через GET) http://server.com? A = 1 & b = 2 должен всегда возвращать один и тот же ответ. Поскольку так и должно быть, ответ может (и должен) быть кэширован.
Поскольку, по-видимому, вы не возвращаете один и тот же ответ при каждом вызове, ваш URL является не идемпотентом. Это не хорошо с архитектурной точки зрения. Несмотря на то, что вы впервые столкнулись с проблемой кеша браузера, вы также можете столкнуться с проблемами с кешем в нескольких точках кэширования на пути от клиента к вашему серверу. Например, кеширующий прокси-сервер и т. Д.
Метод очистки кеша, который я описал выше (добавление изменяющегося параметра в URL), будет работать. Но лучше было бы использовать запрос POST.
Добавлена
Предположения кэширования в HTTP сложны. Я упрощаю вещи, когда говорю, что URL HTTP GET должны быть идемпотентными. В зависимости от значений заголовка и тегов мета-заголовка в теле HTML, можно менять результаты с определенного URL-адреса GET. В простом случае по умолчанию браузер и промежуточные точки кэширования предполагают, что GET являются идемпотентными.
Поскольку типичные результаты простого ответа на данные не устанавливают заголовки кэширования явно, предполагается, что результаты могут быть кэшированы. Таким образом, проблема, с которой столкнулся ОП.