Кэширование отклика json с сервера и автоматическое определение момента изменения данных

Я работаю над угловым приложением, которое выполняет вызовы на сервер и получает данные JSON. Я смотрю на кэширование этих данных JSON.

Подход пробовал:

1) Я попытался использовать html5 localSorage, чтобы сохранить данные локально. Но проблема в том, что я должен вручную установить время истечения, и нет никакого способа узнать, как иногда данные будут меняться.

2) Я попытался использовать $cacheFactory, однако это не кэширует данные при обновлении или переходах по страницам.

Решение, которое я ищу,

Я хочу, чтобы данные были сохранены локально или кэшированы. И использовать некоторый механизм, чтобы обнаружить, изменились ли данные, возвращаемые сервером (данные JSON), и только затем сделать вызов.

Возможно ли это каким-либо образом?

1 ответ

Я надеюсь, что вы получаете данные из HTML, вызываете веб-сервис и сохраняете данные в локальном хранилище. В $http Успешно вызвать функцию, которая хранит данные в локальном хранилище.

setUserDetails = function(userData){
var username = "";
if(userData != null){
app.setInLocalStorage("loginName",userData.userName);}
}

где userData похож на объект, содержащий ваши HTML-данные,

var userData= {
 userName : $scope.userName,
 };

Получить userData.userName из локального хранилища

 var userLoggedIn = app.retrieveFromLocalStorage("userName");

сравнить данные это изменило с сервера или нет

if(userLoggedIn != null){
            //call the service which gives dynamic response 
            //i hope your saving the success data in userData and userName is property which changes dynamically 
         var newUser = userData.userName;
        if(angular.equals(userLoggedIn, newUser){
             // maintain the same data in localstorage 
                        //or
               //No need to call any other function calls
         }else{    
                  //clear the old data from local storage 
                      app.clearLocalStorage();
                 //storage the new dynamic data in local storage 
                           //or
                  //call the new function calls if you need 
                app.setInLocalStorage("loginName",newUser)
             }
}

В файле app.js включите следующие строки для хранения, восстановления, очистки локального хранилища

setInLocalStorage : function(key , value) {
            // Check browser support
            if (typeof(Storage) != "undefined")
            {
                // Store
                localStorage.setItem(key , value);
            }
            else
            {
                alert("Sorry, your browser does not support Web Storage...");
            }
        },
       retrieveFromLocalStorage : function(key){
        return localStorage.getItem(key);
    },

    clearLocalStorage : function(){
        localStorage.clear();
    }
Другие вопросы по тегам