Vamos encarar a realidade: o AppCache é irritante e tem problemas [1, 2, 3]. Uma grande limitação é o fato de que é impossível armazenar recursos em cache dinamicamente sob demanda. Isso significa que é tudo ou nada quando se trata de deixar um app off-line. Ou tudo no manifesto é armazenado em cache de antemão ou nada é armazenado em cache.
A API FileSystem do HTML5 se torna uma solução atraente para as deficiências do AppCache. É possível armazenar arquivos e hierarquias de pastas no sistema de arquivos local (sandbox) e, em seguida, adicionar/atualizar/remover recursos individuais conforme necessário. Meu colega, Boris Smus, até escreveu uma ótima biblioteca para gerenciar esse tipo de armazenamento em cache off-line no contexto de jogos. A mesma ideia pode ser extrapolada para funcionar com qualquer tipo de app da Web.
crbug.com/89271 é uma correção importante para a API FileSystem, que faz com que os caminhos relativos filesystem: URL funcionem perfeitamente.
Digamos, por exemplo, que eu salvei index.html na pasta raiz do sistema de arquivos (fs.root
), criei uma pasta img e salvei "test.png" nela. O URL filesystem:
desses dois arquivos será filesystem:http://example.com/temporary/index.html
e filesystem:http://example.com/temporary/img/test.png
, respectivamente. Se eu quisesse usar "test.png" para um img.src
, precisaria usar o caminho absoluto completo: <img src="filesystem:http://example.com/temporary/img/test.png">
. Isso significa reescrever todos os URLs relativos em index.html para apontar para o URL filesystem:
do arquivo correspondente. Não é legal. Agora, com essa correção de bug, posso manter o caminho relativo ao arquivo (<img src="img/test.png">
), já que ele será resolvido corretamente para uma origem do sistema de arquivos.
Esse recurso facilita a exibição de uma página e o salvamento de todos os recursos off-line, mantendo a mesma estrutura de pastas da versão on-line.