Pergunta

Por quanto tempo os dados armazenados no localStorage (como parte do DOM de Armazenamento em HTML5) disponíveis?Posso definir um tempo de expiração para os dados que eu coloquei no localStorage?

Foi útil?

Solução

Parece que você pode ter que converter essas listas de DL para grupos.Dê uma olhada neste post.

http://social.technet.microsoft.com/forums/en-us/sharepointcollaboation/thread/02f0d773-8188-4d94-8188-4d94-a448-0c04d838b0cf

Outras dicas

Eu sugeriria armazenar registro de data e hora no objeto você armazena no localStorage

var object = {value: "value", timestamp: new Date().getTime()}
localStorage.setItem("key", JSON.stringify(object));

Você pode analisar o objeto, obter o registro de data e hora e comparar com a data atual e, se necessário, atualizar o valor do objeto.

var object = JSON.parse(localStorage.getItem("key")),
    dateString = object.timestamp,
    now = new Date().getTime().toString();

compareTime(dateString, now); //to implement

Você pode usar LSCACHE. Ele lida com isso para você automaticamente, incluindo casos em que o tamanho do armazenamento excede o limite. Se isso acontecer, começa a podar itens mais próximos da expiração especificada.

De readme:

lscache.set

Stores the value in localStorage. Expires after specified number of minutes.

Arguments
key (string)
value (Object|string)
time (number: optional)

Essa é a única diferença real entre os métodos regulares de armazenamento. Obtenha, remova, etc, funcione da mesma forma.

Se você não precisar de tanta funcionalidade, poderá simplesmente armazenar um carimbo de hora com o valor (via JSON) e verificá -lo para expirar.

Digno de nota, há uma boa razão para que o armazenamento local seja deixado para o usuário. Mas, coisas como o LScache são úteis quando você precisa armazenar dados extremamente temporários.

Os usuários do anúncio não existem no SharePoint até que algo faça com que o SharePoint seja conhecido sobre eles (por exemplo, uma configuração de permissão explícita, o usuário efetuou login, etc).

tente usar spweb.ensureuser (string userlogonname) - ele criará o usuário no SharePoint, se ele ainda não existir e retornará o objeto SPUSER.

Embora o armazenamento local não forneça um mecanismo de expiração, os cookies o fazem. Simplesmente emparelhar uma chave de armazenamento local com um cookie fornece uma maneira fácil de garantir que o armazenamento local possa ser atualizado com os mesmos parâmetros de expiração que um cookie.

Exemplo em jQuery:

if (!$.cookie('your_key') || !localStorage.getItem('your_key')) {
    //get your_data from server, then...
    localStorage.setItem('your_key', 'your_data' );
    $.cookie('your_key', 1);
} else {
    var your_data = localStorage.getItem('your_key');
}
// do stuff with your_data

Este exemplo define um cookie com o parâmetro padrão para expirar quando o navegador estiver fechado. Assim, quando o navegador é fechado e reaberto, o armazenamento de dados local para o seu_data é atualizado por uma chamada do lado do servidor.

Observe que isso não é exatamente o mesmo que removendo O armazenamento de dados local, está atualizando o armazenamento de dados local sempre que o cookie expira. No entanto, se seu principal objetivo é poder armazenar mais de 4K do lado do cliente (a limitação do tamanho do cookie), esse emparelhamento de cookies e armazenamento local ajudará você a realizar um tamanho de armazenamento maior usando os mesmos parâmetros de expiração que um cookie .

em um tema gratuito e publicamente disponível, sim, você pode!

Se você construiu o tema, sim, você pode!

Se o tema estiver sob uma licença GPL ou completamente de domínio público, sim, você pode!

mas

Se você é um cliente de um desenvolvedor que construiu o tema para você, no entanto, pode não ser tão simples. Pode estar no seu contrato que seja colocado lá, e você deveria ter negociado isso ao procurar um desenvolvedor ou agência. Consulte o seu designer / desenvolvedor ou Entre em contato com um advogado .

Comprar um tema de uma loja temática também é questionável, verifique os seus Termos de Serviço e o Contrato e, em caso de dúvida, entre em contato com um advogado

Se um tema premium tiver uma versão gratuita do Lite, então ele também pode ser questionável, pergunte ao autor original e verifique a licença e, em caso de dúvida, entre em contato com um advogado

Tenha em mente que este não é um fórum para assessoria jurídica, e não somos profissionais legais. Conhecemos alguns casos, é de fato legal, mas para outros casos, não podemos fornecer aconselhamento jurídico sólido. O que legal também muda do estado para o estado.

O ciclo de vida é controlado pelo aplicativo/usuário.

De padrão:

Os agentes do usuário devem expirar os dados das áreas de armazenamento local apenas por razões de segurança ou quando solicitado pelo usuário. Os agentes do usuário devem sempre evitar a exclusão de dados enquanto um script que pode acessar esses dados está em execução.

Do draft do W3C:

Os agentes do usuário devem expirar os dados das áreas de armazenamento local apenas por razões de segurança ou quando solicitado pelo usuário. Os agentes do usuário devem sempre evitar a exclusão de dados enquanto um script que pode acessar esses dados está em execução.

Você deseja fazer suas atualizações em sua programação usando o setItem (chave, valor); Isso adicionará ou atualizará a chave fornecida com os novos dados.

// Functions
function removeHtmlStorage(name) {
    localStorage.removeItem(name);
    localStorage.removeItem(name+'_time');
}

function setHtmlStorage(name, value, expires) {

    if (expires==undefined || expires=='null') { var expires = 3600; } // default: 1h

    var date = new Date();
    var schedule = Math.round((date.setSeconds(date.getSeconds()+expires))/1000);

    localStorage.setItem(name, value);
    localStorage.setItem(name+'_time', schedule);
}

function statusHtmlStorage(name) {

    var date = new Date();
    var current = Math.round(+date/1000);

    // Get Schedule
    var stored_time = localStorage.getItem(name+'_time');
    if (stored_time==undefined || stored_time=='null') { var stored_time = 0; }

    // Expired
    if (stored_time < current) {

        // Remove
        removeHtmlStorage(name);

        return 0;

    } else {

        return 1;
    }
}

// Status
var cache_status = statusHtmlStorage('cache_name');

// Has Data
if (cache_status == 1) {

    // Get Cache
    var data = localStorage.getItem('cache_name');
    alert(data);

// Expired or Empty Cache
} else {

    // Get Data
    var data = 'Pay in cash :)';
    alert(data);

    // Set Cache (30 seconds)
    if (cache) { setHtmlStorage('cache_name', data, 30); }

}

Se alguém usando o plug -in jStorage do jQuery, ele pode ser adicionado expiração com a função Setttl se o plug -in jStorage

$.jStorage.set('myLocalVar', "some value");
$.jStorage.setTTL("myLocalVar", 24*60*60*1000); // 24 Hr.

Se alguém ainda está procurando uma solução rápida e não quiser dependências como jQuery etc, escrevi um mini lib que adiciona expiração ao armazenamento local / session / personalizado, você pode encontrá -lo com a fonte aqui:

https://github.com/ronenness/expiredStorage

Solução usando angular e localforage:

angular.module('app').service('cacheService', function() {

  return {
    set: function(key, value, expireTimeInSeconds) {
      return localforage.setItem(key, {
        data: value,
        timestamp: new Date().getTime(),
        expireTimeInMilliseconds: expireTimeInSeconds * 1000
      })
    },
    get: function(key) {
      return localforage.getItem(key).then(function(item) {
        if(!item || new Date().getTime() > (item.timestamp + item.expireTimeInMilliseconds)) {
          return null
        } else {
          return item.data
        }
      })
    }
  }

})

@A abordagem de Sebarmeli é a melhor na minha opinião, mas se você deseja que apenas os dados persistam a vida de uma sessão, então sessionStorage é provavelmente uma opção melhor:

Este é um objeto global (SessionStorage) que mantém uma área de armazenamento disponível para a duração da sessão da página. Uma sessão de página dura enquanto o navegador estiver aberto e sobrevive ao recarregar e restaurar a página. Abrir uma página em uma nova guia ou janela fará com que uma nova sessão seja iniciada.

MDN: SessionStorage

Você pode criar 2 pequenas avaliações:
Etapa 1
If (a ou b) adicionar 1 a variável de fluxo de trabalho.
If (c ou d) adicionar 1 a variável de fluxo de trabalho.
Etapa 2
Se variável de fluxo de trabalho= 2
Status de atualização= verde

Você pode tentar este.

var hours = 24; // Reset when storage is more than 24hours
var now = new Date().getTime();
var setupTime = localStorage.getItem('setupTime');
if (setupTime == null) {
     localStorage.setItem('setupTime', now)
} else {
    if(now-setupTime > hours*60*60*1000) {
         localStorage.clear()
         localStorage.setItem('setupTime', now);
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top