Aura Storage - хранит данные несколько секунд? (следует хранить долго)

aura-framework

137 просмотра

1 ответ

1335 Репутация автора

Я пытаюсь использовать хранилище Aura для хранения графических данных на стороне клиента. чтобы создать хранилище я использую:

function getStorage() {
            var storageName = "GraphsData";

            var storage = $A.storageService.getStorage(storageName);

            if (!storage) {
                console.log("creating storage...");

                storage = $A.storageService.initStorage({
                        name: storageName, // name
                        persistent: true, // persistent
                        secure: true, // secure
                        maxSize: 1024*1024*10, // maxSize in bytes
                        defaultExpiration : 60000, // defaultExpiration (seconds)
                        defaultAutoRefreshInterval: 60000, // defaultAutoRefreshInterval (seconds)
                        debugLoggingEnabled: true, // debugLoggingEnabled
                        clearStorageOnInit: false, // clearStorageOnInit
                        version: "1.0" // version
                    });
            }
            console.log("storage: " + storage);

            return storage;
        }

И это работает, я могу хранить некоторые данные, выполнив:

storage.set("graphData", data);

И получить данные по:

getGraphData : function() {
        var storage = getStorage();
            return storage.get("graphData").then( function(data) { 
                if (data) {
                    var promise = new Promise(function(resolve, reject) {
                        resolve(data);
                    });
                    return promise;
                }
                else
                {
                     .....

Но через 8-10 секунд, когда я снова пытаюсь извлечь данные из хранилища, хранилище возвращает неопределенное значение (как будто данные были удалены). Но почему так быстро? Я играл с другими параметрами инициализации, но это ничего не изменило.

Автор: razor Источник Размещён: 18.07.2016 10:13

Ответы (1)


0 плюса

1335 Репутация автора

Решение

хорошо, я обнаружил, что документация вводит в заблуждение (неправильно).

заглянув в компонент (через консоль отладки), я нашел разные свойства:

AuraStorage {$adapter$: MemoryAdapter, name: "GraphsData", $maxSize$: 10485760, $expiration$: 10000, $autoRefreshInterval$: 30000…}
$adapter$:    MemoryAdapter
$autoRefreshInterval$    :    30000
$debugLogging$    :    false    
$expiration$    :    10000   
$getOperationsInFlight$    :    0
$keyPrefix$    :    "1.0:"
$lastSweepTime$    :    1468848393250
$maxSize$    :    10485760
$sweepInterval$    :    300000
$sweepPromise$    :    undefined
$sweepingSuspended$    :    false
adapter    :    MemoryAdapter
name    :    "GraphsData"
version    :    "1.0"

после установки параметра expiration (вместо defaultExpiration) все стало работать как положено. Теперь я использую

expiration : 600,

по истечении 10 минут

Автор: razor Размещён: 18.07.2016 01:33
32x32