Ext.ux.LocalProvider = function() {
    Ext.ux.LocalProvider.superclass.constructor.call(this);
};
Ext.extend(Ext.ux.LocalProvider, Ext.state.Provider, {
    //************************************************************
    set: function(name, value) {
        if (typeof value == "undefined" || value === null) {
            localStorage['state_' + name] = undefined;
            return;
        }
        else {
            localStorage['state_' + name] = this.encodeValue(value);
        }
    },
    //************************************************************
    // private
    clear: function(name) {
        localStorage['state_' + name] = undefined;
    },
    //************************************************************
    get: function(name, defaultValue) {
        return Ext.value(this.decodeValue(localStorage['state_' + name]), defaultValue);
    }
});
// zdefiniowanie procedury obsugi stanu
Ext.onReady(function setupState() {
    var provider = new Ext.ux.LocalProvider();
    Ext.state.Manager.setProvider(provider);
});
Moliwe byoby rwnie umieszczenie wszystkich danych stanu w jednym duym obiekcie i przechowywanie go w jednym kluczu magazynu. Korzyci z tego wynikajc jest to, e w magazynie nie jest tworzona dua liczba elementw. Jednake kod staje si bardziej zoony. Jeli ponadto dwa okna prbuj zaktualizowa magazyn, jedno moe negatywnie wpyn na zmiany dokonane przez drugie. Lokalne magazynowanie danych opisane w rozdziale nie oferuje adnego znakomitego rozwizania problemu dotyczcego warunkw wycigu. W miejscach, w ktrych moe to stanowi problem, prawdopodobnie lepsze bdzie uycie interfejsu IndexedDB lub innego rozwizania.
adowanie w trybie bez poczenia przy uyciu magazynu danych
Gdy cz trwaych danych uywanych w aplikacji bdzie stosunkowo niezmienna, w celu zapewnienia szybszego dostpu moe mie sens adowanie danych do lokalnego magazynu. W tym przypadku niezbdne bdzie zmodyfikowanie obiektu Ext.data.JsonStore tak, aby jego metoda load() szukaa danych w obszarze localStorage przed podjciem prby zaadowania danych z serwera. Po zaadowaniu danych z obszaru localStorage obiekt Ext.data.JsonStore powinien wywoa serwer w celu sprawdzenia, czy dane zostay zmienione. W ten sposb aplikacja moe natychmiast udostpni dane uytkownikowi, co moe wiza si z wystpieniem krtkoterminowej niespjnoci. Moe to zapewni szybsz obsug interfejsu przez uytkownika, a ponadto zredukowanie przepustowoci wykorzystywanej przez aplikacj.
Poniewa w przypadku wikszoci da dane nie bd modyfikowane, naprawd sensowne jest uycie dla danych okrelonej postaci mechanizmu ETag. Dane s dane z serwera przy uyciu dania GET protokou HTTP i nagwka If-None-Match. Jeli serwer stwierdzi, e dane nie ulegy zmianie, moe wysa odpowied 304 Not Modified. Jeeli dane zostay zmodyfikowane, serwer odele nowe dane, a aplikacja zaaduje je zarwno do obiektu Ext.data.JsonStore, jak i do obiektu sessionStorage.
Obiekt Ext.data.PreloadStore (przykad 4.6) przechowuje dane w buforze sesji jako jeden duy obiekt JSON (przykad 4.5). Dodatkowo dane odsyane przez serwer obiekt opakowuje w kopert JSON, ktra umoliwia przechowywanie w niej metadane. W tym przypadku s przechowywane dane mechanizmu ETag, a take data ich zaadowania.
Przykad 4.5. Format danych trybu bez poczenia obiektu Ext.data.PreloadStore
{
    "etag": "25f9e794323b453885f5181f1b624d0b",
    "loadDate": "26-jan-2011",
    "data": {
        "root": [{
            "code": "us",
            "name": "Stany Zjednoczone"
        },
        {
            "code": "ca",
            "name": "Kanada"
        }]
    }
}