Używam getJSON
do pobierania wyników po stronie serwera, ale napotykam problemy z pamięcią podręczną przeglądarki. Chcę, żeby pamięć podręczna była fałszywa. Próbowałem tego użyć tuż przed getJSON
rozmową telefoniczną.
$.ajaxSetup({
cache: false
})
Ale nie osiągam oczekiwanych rezultatów. Nadal pokazuje stare wyniki.
Zidentyfikowałem również inne rozwiązania, takie jak używanie, .ajax
ale naprawdę nie chcę tego używać.
jquery
jquery-ui
getjson
browser-cache
Abhinav
źródło
źródło
Odpowiedzi:
Twój kod potrzebuje tylko wyzwalacza, aby został włączony.
Umożliwi to wyłączenie pamięci podręcznej we wszystkich przyszłych AJAX
$(document).ready(function() { $.ajaxSetup({ cache: false }); });
Mam nadzieję, że to pomoże :)
źródło
Możesz użyć tego, co spowoduje globalne wyłączenie pamięci podręcznej:
$(document).ready(function() { $.ajaxSetup({ cache: false }); });
lub zamiast tego
$.getJSON
, aby wyłączyć pamięć podręczną tylko dla takiego żądania:$.ajax({ cache: false, url: "/path/to.json", dataType: "json", success: function(data) { ... } });
źródło
odpowiedzi semente i bonesnatch są poprawne, ale jeśli chcesz użyć $ .getJSON i gdzie indziej, skorzystaj z jego buforowania (nie chcesz ustawiać pamięci podręcznej na fałsz dla wszystkich połączeń), ale chcesz zepsuć pamięć podręczną tylko dla pojedyncze wywołanie, możesz wstrzyknąć znacznik czasu do właściwości data $ .getJSON (). Dodając unikalną wartość do ciągu zapytania żądania, żądanie zawsze będzie unikalne i nie będzie przechowywane w pamięci podręcznej przez przeglądarkę - zawsze otrzymasz najnowsze dane.
Długa wersja:
var ts = new Date().getTime(); var data = {_: ts}; var url = '/some/path.json'; $.getJSON(url, data);
Wszystko w jednej wersji:
$.getJSON('/some/path', {_: new Date().getTime()});
Oba skutkują następującym żądaniem:
/some/path.json?_=1439315011130
gdzie liczba na końcu jest sygnaturą czasową w momencie wywołania kodu i dlatego zawsze będzie unikalna.
źródło