Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sua Aplicação Offline

Sua Aplicação Offline

Maneiras de tornar seu conteúdo disponível enquanto o usuário não tem conexão com internet, persistindo apenas o necessário em ambiente local.

Daniel Filho

October 16, 2012
Tweet

More Decks by Daniel Filho

Other Decks in Technology

Transcript

  1. AGENDA appCache Como usar Estrutura do arquivo de manifesto Cache

    States Checando status da conexão Links Referências
  2. APPCACHE O QUE É POSSÍVEL? Gravar dados em texto Gravar

    dados binários Sincronizar dados com o servidor Melhorar a performance da aplicação
  3. example.com/page.html é digitado na barra de endereços carrega página, arquivos

    do cache e arquivo manifest carrega página da web a página já está no appCache? sim não baixa o arquivo manifest baixa e guarda em cache os arquivos apontados pelo manifest dispara evento ‘cached’ verifica manifest mudou não mudou 404 apagar todos os arquivos cacheados antes baixar e guardar todos os arquivos do manifest dispara evento ‘updateready’ dispara evento ‘obsolete’ dispara evento ‘noupdate’ Louis-Rémi: Offline Web Applications, we’re not there yet
  4. CACHE MANIFEST # version 1.3 CACHE: #images /images/sprite.png /images/photo.png #pages

    /pages/page1.html /pages/page2.html {...} {...} #CSS /style/style.css #scripts /js/script.js FALLBACK: / /offline.html NETWORK: /join/signup.html /app/updateInfo.pl
  5. Todo arquivo .appcache necessita começar com a linha CACHE MANIFEST,

    validando a finalidade do arquivo para o servidor.
  6. CACHE MANIFEST: COMENTÁRIOS • Os comentários iniciam com o char

    “#” • É uma boa prática versionar o arquivo para certificar que o mesmo seja alterado enquanto desenvolve
  7. CACHE: • CACHE: define início da declaração dos arquivos que

    devem ser armazenados. • #images define o começo da declaração de imagens que serão armazenadas. • /images/image1.png mostra o caminho relativo para o arquivo
  8. NETWORK: • NETWORK: define a área que nunca deve ser

    armazenada. • O arquivo signup.html deve ser apenas acessado quando online.
  9. NETWORK: • É possível utilizar wildcards como /dynamic/*, assim, tudo

    que tentar ser acessado na pasta / dynamic/ estará disponível apenas quando conectado.
  10. FALLBACK: • FALLBACK: é usado para dar caminhos diferentes ao

    usuário quando ele está offline. • A primeira parte (no caso “/”) define o caminho ou arquivo a ser testado. • Separado por espaço, logo em seguida vem o arquivo ou caminho que deve ser carregado (no caso “/offline.html”)
  11. CACHE STATES: UNCACHED Indica quando um objeto do cache da

    aplicação não foi totalmente inicializado.
  12. CACHE STATES: DOWNLOADING Os recursos estão sendo carregados para serem

    incluidos no cache, devido a alteração no manifest.
  13. CACHE STATES: UPDATEREADY Indica a existência de uma nova versão

    do cache que já está pronta para ser usada.
  14. var appCache = window.applicationCache; switch (appCache.status) { case appCache.UNCACHED: //

    UNCACHED == 0 return 'UNCACHED'; break; case appCache.IDLE: // IDLE == 1 return 'IDLE'; break; case appCache.CHECKING: // CHECKING == 2 return 'CHECKING'; break; case appCache.DOWNLOADING: // DOWNLOADING == 3 return 'DOWNLOADING'; break; case appCache.UPDATEREADY: // UPDATEREADY == 4 return 'UPDATEREADY'; break; case appCache.OBSOLETE: // OBSOLETE == 5 return 'OBSOLETE'; break; default: return 'UKNOWN CACHE STATUS'; break; };
  15. var appCache = window.appCache; appCache.addEventListener('cached', function(){...}, false); appCache.addEventListener('checking', function(){...}, false);

    appCache.addEventListener('downloading', function(){...}, false); appCache.addEventListener('error', function(){...}, false); appCache.addEventListener('noupdate', function(){...}, false); appCache.addEventListener('obsolete', function(){...}, false); appCache.addEventListener('progress', function(){...}, false); appCache.addEventListener('updateready', function(){...}, false);
  16. ATENÇÃO Se o appcache for atualizado, o navegador não irá

    atualizar os itens ou a página carregada.