У меня есть следующий код, делающий запрос GET на URL:
$('#searchButton').click(function() {
$('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val());
});
Но возвращаемый результат не всегда отражается. Например, я внес изменение в ответ, которое выдает след стека, но след стека не появился, когда я нажал на кнопку поиска. Я посмотрел на базовый код PHP, который контролирует ответ ajax, и он содержал правильный код, и посещение страницы напрямую показало правильный результат, но результат, возвращаемый .load, был старым.
Если я закрою браузер и снова открою его, он будет работать один раз, а затем начнет возвращать устаревшую информацию. Могу ли я контролировать это с помощью jQuery или мне нужно иметь выходные заголовки PHP-скрипта для управления кэшированием?
Вот пример того, как управлять кэшированием для каждого запроса
источник
Одним из способов является добавление уникального номера в конец URL:
Где вы пишете uniqueId (), чтобы каждый раз вызывать что-то новое.
источник
(+new Date)
(или,new Date().getTime()
если вы сторонник). Посмотрите, как вы получаете метку времени в JavaScript?Другой способ поместить строку ниже только тогда, когда требуется получить данные с сервера, добавьте строку ниже вместе с вашим URL-адресом ajax.
? _ = '+ Math.round (Math.random () * 10000)
источник
источник
func.call(elem, data, textStatus, XMLHttpRequest);
Саша хорошая идея, я использую микс.
Я создаю функцию
И вызвать для различных частей моей страницы, например, на init:
Init: function (actionUrl1, actionUrl2, actionUrl3) {
var ExampleJS = {
ExampleJS.LoadWithoutCache (actionUrl2, "div2"); ExampleJS.LoadWithoutCache (actionUrl3, "div3"); }},
источник
Это особенно раздражает в IE. По сути, вы должны отправлять HTTP-заголовки «без кеша» обратно с вашим ответом с сервера.
источник
Для PHP добавьте эту строку в ваш скрипт, который предоставляет нужную вам информацию:
или добавьте уникальную переменную в строку запроса:
источник
НЕ используйте метку времени для создания уникального URL-адреса, поскольку каждая посещаемая страница кэшируется в DOM с помощью jquery mobile, и вы скоро столкнетесь с проблемой нехватки памяти на мобильных устройствах.
Этот код активируется перед загрузкой страницы, вы можете использовать url.indexOf (), чтобы определить, является ли URL-адрес тем, который вы хотите кэшировать, или нет, и соответственно установить параметр кэширования.
Не используйте window.location = ""; чтобы изменить URL, в противном случае вы перейдете к адресу, а pagebeforeload не сработает. Чтобы обойти эту проблему, просто используйте window.location.hash = "";
источник
Если вы хотите использовать метод Jquery .load (), добавьте в URL что-то уникальное, например временную метку JavaScript. msgstr "+ новая дата (). getTime ()". Обратите внимание, я должен был добавить «& time =», чтобы он не изменил вашу переменную pid.
источник
Вы можете заменить функцию загрузки jquery версией с кэшем, установленным в false.
Поместите это где-нибудь глобально, где он будет работать после загрузки jquery, и вы должны быть готовы. Ваш существующий код загрузки больше не будет кэшироваться.
источник
Попробуй это:
Он отлично работает, когда я его использовал.
источник
Я заметил, что если некоторые серверы (например, Apache2) не настроены специально для разрешения или запрета какого-либо «кэширования», то сервер по умолчанию может отправлять «кэшированный» ответ, даже если для заголовков HTTP установлено «no-cache». Поэтому убедитесь, что ваш сервер ничего не "кэширует", прежде чем отправит ответ:
В случае Apache2 вы должны
1) отредактируйте файл "disk_cache.conf" - для отключения кеша добавьте директиву "CacheDisable / local_files"
2) загрузить модули mod_cache (в Ubuntu "sudo a2enmod cache" и "sudo a2enmod disk_cache")
3) перезапустите Apache2 (Ubuntu "sudo service apache2 restart");
Это должно сделать хитрость отключения кэша на стороне сервера. Ура! :)
источник
Этот код может помочь вам
источник