Testo um código html / js no meu host local (Windows 7, Chrome v79.0.3945.130 (64 bits)) e cerca de 50% das alterações no código de tempo não são refletidas no navegador (eu o vejo em Ferramentas / Fontes de Desenvolvimento )
Há muitos conselhos na internet, mas nenhum deles parece funcionar:
- Clique com o botão direito do mouse no recarregamento e escolha "Cache vazio e recarregamento físico" - não ajuda em 30% dos casos.
- Desabilitar o cache na guia Rede das Ferramentas de Desenvolvimento do Chrome - não ajuda.
- Adicione
<meta http-equiv="Cache-control" content="no-cache">
no cabeçalho - não ajuda. - Substituir
<script src="common.js"></script>
por<script src="common.js?blabla"></script>
- ajuda em 60% dos casos, mas você precisa fazer isso depois que cada mudança é uma tarefa árdua. Além disso, ele não funciona com alterações de html. - Copie um arquivo para um novo arquivo (como index.html para index2.html) e substitua o nome do arquivo no código - sempre funciona, mas é uma tarefa ainda maior.
Exatamente o mesmo problema presente quando eu comprometo o código no github.io
Ajude-me a fazer com que o site reflita as alterações de código imediatamente.
Edit: Eu criei um arquivo index3.html e coloquei apenas "olá mundo" lá. Abriu o arquivo no navegador. Alterado para "olá mundo2" - o navegador atualizou o conteúdo. Alterado para "olá mundo3" - o navegador ainda estava exibindo "olá mundo2", mesmo após várias recargas e "cache vazio e recarga forçada". Mudei para "olá mundo4" - o navegador ainda mostrava "olá mundo2". Em 4 horas, mudei para "olá mundo5" - o navegador ainda mostra "olá mundo2". Este arquivo editei com o bloco de notas básico.
Edit2: As pessoas continuam perguntando qual servidor eu estou usando. Isso parece parte do problema. Infelizmente, não sei e também não sei exatamente o que preciso fazer para verificá-lo. Aqui está tudo o que descobri até agora:
- Eu tenho o
inetpub/wwwroot
diretório em que coloco os arquivos html & js e, em seguida, abro o index.html em um navegador emhttp://localhost/
. - Meu painel Rede no Devs Tools é assim: link da imagem .
- A configuração do servidor foi muito rápida e não exigiu nenhum software adicional para instalar. Ou seja, eu não estou usando o node.js.
- Há iisstart.htm em
inetpub/wwwroot
e quando eu abrohttp://localhost/iisstart.htm
, diz IIS7.
fonte
index.html
para algo como um cabeçalhoX-Powered-By
ouServer
que possa dar uma dica sobre o servidor da Web. A pesquisa no seu caminho de arquivoinetpub/wwwroot
aponta fortemente para um servidor IIS.Respostas:
Usar um parâmetro é o caminho certo! Aqui você pode adicionar um número de versão que você altera somente em grandes alterações manualmente e, para depuração, pode defini-lo como Date.time () para que, na tag <head>, isso force todas as versões em cache a serem substituídas, pois o parâmetro é sempre um novo 1:
Espero que isto ajude!
fonte
No servidor Windows IIS7 em execução no Windows 7, para impedir o armazenamento em cache do seu conteúdo, é necessário fazer algumas alterações em um dos arquivos de configuração chamado
web.config
. Os arquivos de configuração do IIS 7 e posterior estão localizados em%WinDir%\System32\Inetsrv\Config folder
onde%WinDir%
está a pasta em que você instalou o Windows (normalmenteC:/Windows
).Crie uma cópia de backup do seu
web.config
arquivo antes de editá-lo, para que você possa reverter se as alterações feitas no arquivo o quebrarem.No seu
web.config
arquivo, basta adicionar o seguinte para impedir o armazenamento em cache do seuindex.html
:Obtenha o caminho do
web.config
arquivo a partir daqui: Windows Doc: Referência de ConfiguraçãoA configuração do cache acima foi obtida aqui: Como desativar o cache do arquivo HTML do aplicativo de página única veiculado pelo IIS?
fonte
projectName/index.html
, como copio da url no meu navegadorhttp:/localhost/projectName/index.html
. Resultado - nenhum efeito no problema de armazenamento em cache.web.config
arquivo na pasta raiz do seu site (pasta em que o site está) e alterar o caminho de volta para apenas paraindex.html
ver se isso funciona.Eu tive o mesmo problema e esta é minha lista de verificação:
<%Response.Expires=1440%>
muitas linhas de código ASP e estava superando todas as outras configurações! Em phpsession_cache_expire
maio faz o mesmo.http-equiv="Cache-control"
nos cabeçalhos html (você passou neste teste!).Finalmente, devo dizer que, em todas as situações acima, a seleção de Desativar cache na guia newtwork no console do Chrome sempre funcionou para exibir uma versão nova das páginas; no entanto, isso é bom apenas para fins de depuração e os visitantes não fazem isso!
fonte
No caso específico do uso do Google Chrome, tente o seguinte: Abra Ferramentas de Desenvolvimento -> Vá para a guia 'Rede'. Marque a caixa de seleção 'Desativar cache', depois atualize a página.
No entanto, para propagar alterações para seus usuários, sem que eles atualizem a página com força, etc, você deve anexar versões de arquivo no final de cada arquivo referenciado para arquivos que mudam com frequência (como você apontou). Por exemplo:
O
v=20b379f72a37
anexo ao final é um hash de arquivo gerado automaticamente do conteúdo do arquivo.fonte
Este é um tiro no escuro - mas que tipo de editor / IDE você está usando? Além disso, que tipo de edição você está fazendo no seu index.html?
Você poderia fornecer alguns exemplos dessas edições que não estão sendo refletidas quando você salva e tenta carregar o arquivo?
Gostaria de tentar reproduzir seu problema. Pelo que as pessoas estão sugerindo, não parece que o problema esteja dentro do próprio código. Suspeito que seja uma questão ambiental, mas preciso de mais informações suas para confirmar minhas suspeitas.
fonte
O que você escreve na meta HTML é uma recomendação para os navegadores, não uma instrução estrita. Se o armazenamento em cache estrito estiver ativado no navegador, isso não ajudará.
As soluções estão bem descritas: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
Prefiro do lado do servidor adicionar aos scripts a versão com a data da última atualização do arquivo.
Onde 1579780745150 é Unix O registro de data e hora atualiza o próprio arquivo myScript.js . Funciona apenas com seus próprios arquivos, mas não são necessários arquivos externos. Geralmente, o nome do arquivo é a versão.
fonte
Isso provavelmente é realmente frustrante e não parece que você esteja fazendo algo errado.
O problema é provável que algo entre o navegador e o arquivo de script que você está chamando faça algum cache.
Para determinar o que é, deixe-me perguntar como você está navegando no URL do host local?
Exemplos:
Se você estiver executando
file://path/to/file.html
isso significa que não está navegando em um servidor / proxy da web. Se forhttp://[something]/file.html
, você está executando algum tipo de servidor da web e esse é provavelmente o culpado. Procure por algum tipo de configuração em que você possa desativar o cache.Se você não estiver usando um servidor Web e estiver literalmente navegando diretamente para um arquivo html local sem um servidor Web, sugiro que o navegador seja o culpado. Se for esse o caso, sugiro desativar o cache do navegador, como sugerido por Martin Shishkov .
fonte
http://localhost/ProjectName/index.html
onde está essa configuração em que você pode desativar o cache?file://path/to/projectName/index.html
. Isso removerá o servidor web da equação. Para continuar usando o IIS e apenas corrigir o cache, consulte este artigo: support.microsoft.com/en-us/help/247404/…O Chrome faz isso onde, se o arquivo não mudou muito, não sabe o que significa, ele usará a versão do cache "compilado". Para html, significa analisado don tree. Para código pré-compilado JS etc.
Geralmente, existem maneiras de resolver isso, muitas estruturas usam hash dentro de nomes de arquivos, como:
main.md5hash.js
porque a alteração do nome do arquivo invalida qualquer cache.Então você ficará com o html possivelmente não atualizando. E para ser claro, não tenho certeza, você sempre pode adicionar comentários com blob aleatório ... como uma data.
fonte
Com base nas atualizações da sua resposta, eu diria que o problema é causado pelo IIS v7, que usa a memória do PC para armazenar em cache não o disco rígido local
Hard reload
e é por isso que todos os outros métodos parecem não funcionar corretamente.Eu poderia pensar em 3 solução:
1. Corrigindo o problema de cache do IIS: (Não testado devido ao fato de eu não ter um PC com IIS)
extension
que você deseja desativar no cache.aspx
, como .css, .js etc ... (um de cada vez, eu acho?)Origem da solução - Leia mais sobre o cache do IIS 7
2. Usando algumas alternativas ao IIS Existem algumas, mas eu recomendaria (com base em minhas experiências) WAMP ou XAMPP. Ambos oferecem um "ambiente" de desenvolvimento melhor e ambos oferecem suporte ao Windows 7. Além disso, se você estiver familiarizado com Código VS, você pode apenas usar a extensão do Live Server .
3. Use o modo de navegação anônima do Chrome durante o desenvolvimento. (Não tenho certeza se funciona para o IIS7)
fonte
.js
arquivos? depende de quais mudanças você faz.