Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Cache no aplicativo?

Olá, estou tentando fazer com que um aplicativo leia as informações de uma base de dados (online), porém (e talvez óbvio) quando essa base de dados é modificada o aplicativo não atualiza. Se eu estiver testando via "run browser" ele atualiza os dados mediante ao refresh da página, mas no android como faria isso?

Fiz a seguinte função com um ajax em angular que tenta atualizar:

$scope.atualizar = function(){
        $http.get('http://mastrodomenico.com.br/myapp/produtos/get').then(function (res) {
            $scope.base = res.data;
        }, function(response){
            console.log(response);
        });
}

o escopo base é onde está todos os dados que alimenta o aplicativo. Mas isso não funciona.

Existe alguma forma de atualizar o aplicativo, tipo, simular um F5? Ou melhor, fazer o aplicativo atualizar de forma síncrona com o servidor?

Valeeu!

6 respostas

Pra dar o F5, você pode fazer um simples location.reload() que funciona mesmo na WebView.

Mas ideal era vc guardar esse dado e atualizar depois na memoria mesmo.

Esse seu codigo Angular parece fazer sentido. Pq nao funciona? Na sua view vc faz binding com os dados da variavel base tbm? Chegou a colocar um log dentro desse callback do ajax pra ver se ele ta chamando de boas e se os dados tao vindo atualizados?

Ah, o location.reload() funciona!

Mas pela função do angular não funciona, eu joguei para o console.log e vi que os dados lá não estão atualizando. Problema de sintaxe no Ajax não é, pq é exatamente a mesma função que alimenta quando o aplicativo inicia, e nem de binding, pq manualmente funciona.

Parece que é algum tipo de cache no $http.get, que só altera os dados quando tem algum relaod na página. Mas acho que esse problema é no meu Angular e não no cordova! rs

solução!

Será que a sua URL tá devolvendo algum header de Cache? Expires, Cache-Control? Ta com cara que ele ta guardando esses dados.

Um jeito pra invalidar isso seria colocar um timestamp qq na URL pra forçar ele refazer o request

Com um '?' no final da URL funcionou.

Mas será que isso é alguma configuração do meu servidor?

É possível que sim... tem que ver como ta vindo o response, de tem algum header a mais de cache

Tópico resolvido, mas só para acrescentar para caso alguém também tenha esse problema:

Meu server é php então foi só adicionar dois header

header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

que resolveu tudo!