it-swarm-pt.tech

Como você força um aplicativo da web marcado na tela inicial do iPad a ser atualizado?

Eu me deparei com um problema em que adiciono um aplicativo da Web à minha tela inicial do iPad (iOS 5.0.1 iPad 2) e, quando abro, parece estar fazendo o cache de algo nos bastidores, independentemente do Safari.

Esvaziei tudo do Safari que está disponível em Configurações (Limpar histórico e Limpar cookies e dados) e, quando navego para o aplicativo da web com o Safari, vejo o aplicativo em seu estado atual. No entanto, se eu abrir o marcador da tela inicial, recebo o aplicativo em um estado pré-alterado.

Eu vi muitas informações sobre o uso de um cache.manifest para armazenar recursos em cache para uso offline, mas não tenho certeza se isso é relevante para isso, pois eu gostaria exatamente do oposto: cache nada.

Eu fui ao nível de nem mesmo testar recursos externos; Se eu alterar alguma cadeia de teste arbitrária no elemento body do meu index.html, o indicador da tela inicial não mostrará o texto atualizado.

24
M Marsh

Acho que encontrei uma solução alternativa:

A nova versão do site só aparece quando o arquivo index.html é alterado.
(o primeiro arquivo a ser carregado)

Se você deixar o index.html e apenas alterar alguns js em outros arquivos, o site não carregará a nova versão.

5
christophe

Outra solução é adicionar? V = 1 aos seus links de Javascript e CSS. Por exemplo:

<link rel="stylesheet" type="text/css" media="all" href="./css/ipad.css?v=1">    
<script src="./js/ipad.js?v=1"></script>

Parece que não é necessário atualizar o número quando o arquivo foi alterado, até onde eu sei. Aparentemente, em um iPad 2 com a atualização de software mais recente instalada, basta apenas sugerir algo dinâmico.

24
Hendrik

Crie um cache.manifest que o instrua a nunca armazenar em cache recursos referenciados pela página principal do html:

CACHE MANIFEST

# Version 1.0000

NETWORK:
*

Use-o no seu index.html:

<!DOCTYPE html>
<html manifest="cache.manifest">

Agora, sempre que você alterar esse arquivo de manifesto - por exemplo, aumentando o número da versão nesse comentário - o navegador fará o download novamente de index.html também.

Certifique-se de que sua página seja recarregada quando o cache for atualizado:

<script>
function updateSite(event) {
    window.location.reload();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
</script>

O Safari Developer Library tem boa documentação .

9
Tom

Para nossos aplicativos de webclip do iOS, estamos usando o seguinte. Até agora não há problemas de cache:

1- Temos um arquivo de manifesto de cache chamado 'manifest.appcache.php'

<?php
    header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
    header('Content-type: text/cache-manifest'); 
?>

CACHE MANIFEST

CACHE:
# Don't cache anything
FALLBACK:
# Nothing
NETWORK:
# Request everything from server
*

2 - No arquivo HTML temos:

<!DOCTYPE html>
<html lang="en" manifest="manifest.appcache.php">
    <head>
...
5
Rabi

Você pode forçar o aplicativo da Web aberto a recarregar sem usar o cache se você tiver o Safari Web Inspector aberto e apontando para o aplicativo da Web aberto. Com o Web Inspector ativo, pressione SHIFT + COMMAND + R (em um Mac). Talvez seja necessário atualizar mais uma vez para acionar os ativos atualizados.

2
Sarah

Eu tenho um aplicativo angular que estou desenvolvendo e enfrentei esse problema ao tentar testá-lo em um iPad. Ao adicionar uma consulta sem sentido ao final do URL, consegui obter uma versão atual de todos os recursos. 

www.somesite.com

2
Timothy J Blevins

As últimas ferramentas do desenvolvedor Safari (v12.0.1) tem um botão "Ignorar cache de recursos" no canto superior direito da guia Rede. Verifique isso e recarregue.

0
Chen Lim

Eu tive sorte com o desligamento do dispositivo. Eu mudei o manifesto do aplicativo; mas presumivelmente, você precisa de uma atualização ou algo do tipo para fazer com que o navegador procure por ele. Desde que removi o cromo do navegador, não há nenhum botão de redefinição. Nós tentamos "fechar" o aplicativo (haha) e deslizar o aplicativo; mas presumo que o iOS tende a manter as coisas funcionando de qualquer maneira. Desligar fez o truque para atualizá-lo.

Talvez haja algum gesto para atualizar eu não sei. Talvez devesse colocar um pequeno botão de atualização "verificar atualizações" em aplicativos da web em cache. 

0
NathanSmutz