Как я могу избежать кэширования данных при загрузке через XMLHttpRequest () - PullRequest
4 голосов
/ 23 мая 2011

Я пишу расширение для браузера Chrome (и позже надеюсь портировать на Firefox).Расширение загружает файл конфигурации с моего сервера - XML-файл через XMLHttpRequest.Я обнаружил, что он загружает файл один раз, и каждый последующий вызов просто использует кешированную оригинальную версию файла.Неважно, изменю ли я файл на сервере.

Я читал, что вы можете попробовать

xmlhttp.setRequestHeader ('Pragma', 'Cache-Control: no-cache');

, и поэтому я сделал этоно это, кажется, не имеет никакого значения.Кажется, единственный способ получить новый файл - это удалить кеш браузера - что, очевидно, не является решением для моих растущих пользователей.

Похоже, это проблема, с которой я бы не стал первым сталкиваться - поэтому, учитывая, что правила кэширования, кажется, поддерживают это как политику, которую нелегко избежать, мой вопрос в том, каков лучший дизайн?Есть ли лучшая практика, о которой я не знаю?Должен ли я толкать, а не тянуть как-то?

1 Ответ

4 голосов
/ 23 мая 2011

Простой способ - добавить бесполезный параметр, содержащий время, к запросу.Поскольку время стремится идти вперед, а не назад, вы можете быть достаточно уверены, что ваш запрос уникален и поэтому не будет кэшироваться.

Например (при условииURL находится в строке url):

url += '?_time=' + (new Date()).getTime();

или, если ваш URL уже имеет параметры запроса,

url += '&_time=' + (new Date()).getTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...