Como desativar o cache no Firefox?

143

Durante o desenvolvimento, eu tenho que "limpar o cache" no Firefox o tempo todo para poder usar a versão mais recente dos arquivos JavaScript.

Existe algum tipo de configuração (about: config) para desativar completamente o cache para arquivos JavaScript? Ou, se não, para todos os arquivos?

Thilo
fonte

Respostas:

229

Digite "about: config" na barra de endereços do Firefox e defina:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

Se estiver desenvolvendo localmente ou usando o novo atributo de manifesto do HTML5, talvez seja necessário definir também o seguinte em about: config -

browser.cache.offline.enable = false
tst
fonte
como eu não sabia sobre essa pequena jóia? Todos os tipos de guloseimas em about: config!
ABrowne
2
network.http.use-cache não está lá para mim. Alterar browser.cache.offline.enable não faz diferença para mim.
Curtis
1
Não duvido que seja uma boa resposta, mas ela não parece mais ser verdadeira nas versões mais recentes do Firefox (estou usando a edição 47.0a2 do desenvolvedor no momento). Desativar o cache nas configurações do desenvolvedor da web é eficaz para mim.
JosephStyons
61

A barra de ferramentas do desenvolvedor da Web tem uma opção para desativar o cache, o que facilita muito a ativação e desativação quando necessário.

philnash
fonte
1
CTRL-F5 ou mantendo pressionada a tecla Shift enquanto clica no botão Recarregar é o que eu fiz no passado, mas o recurso "Desativar cache" da barra de ferramentas do desenvolvedor da Web é uma ótima maneira de fazer isso. Você não precisa desativar totalmente o cache do firefox dessa maneira.
Jon Onstott
1
Você deve se lembrar de ativar o cache após o teste. ;)
neurolabs 01/01
1
@ Shanimal, ele funciona para mim no 14.0.1, você pode querer desinstalar / reinstalar ou algo assim.
21412 Lucas
@Lucas doh! Os itens no servidor com o qual eu estava trabalhando estavam em cache, mas eu esqueci de excluir meu comentário ... Obrigado.
Shanimal
1
Isso não funciona mais até o chrispederick corrigir algumas novas alterações do Firefox na versão mais recente. Eu iria com a solução about: config, que é melhor para os desenvolvedores.
precisa saber é o seguinte
12

Você já tentou usar CTRL- F5para atualizar a página?

alguns
fonte
6
Eu realmente tenho dúvidas de que isso funcione de maneira confiável, pelo menos na presença de iframes e framesets.
Thilo
2
correto, ele nem sempre recarrega o JS / CSS em um iframe, mas no Firefox você pode pelo menos colocar esse quadro em uma nova guia e recarregá-lo.
11188 scunliffe 11/11/2008
Eu sempre usei Ctrl-F5 .... então descobri que ele não carregava minhas versões mais recentes dos arquivos js em que estava trabalhando :( Também estava em um iframe (eu sei, iframes são o diabo, não é minha escolha) ).
Gromer
Ctrl-F5 não redefine o cache de arquivos javascript. o que ele faz (principalmente) é limpar sua sessão e cookies, mas não o javascript cache e folhas de estilo
AceMark
10

Não há opção específica para desativar o armazenamento em cache apenas para JavaScript; você precisará desativá-lo totalmente.

O FireBug tem uma opção para desativar o cache do navegador no menu suspenso da guia Rede.

kynan
fonte
8

Na mesma página em que você deseja desativar o cache, faça o seguinte: FYI: a versão na qual estou trabalhando é 30.0

Você pode :

abrir a barra de ferramentas do desenvolvedor da web desenvolvedor web aberto

e escolha desativar cache

Depois disso, ele recarregará a página por conta própria (você está ligado) e tudo será reconfigurado e qualquer solicitação adicional também será recuperada todas as vezes e você poderá manter o desenvolvedor da Web sempre aberto para ficar de olho e garantir que esteja sempre ativado (verifique) .

shareef
fonte
8

Ferramentas do desenvolvedor do Firefox 48

Permite desativar o cache apenas quando a caixa de ferramentas está aberta, o que é perfeito para o desenvolvimento da Web:

  • F12
  • caixa de câmbio no canto superior direito
  • role para baixo topo Configurações avançadas
  • marque "Desativar cache (quando a caixa de ferramentas estiver aberta)"

insira a descrição da imagem aqui

https://stackoverflow.com/a/27397425/895245 possui conteúdo semelhante, mas o posicionamento mudou um pouco desde então.

Ciro Santilli adicionou uma nova foto
fonte
1
Obrigado ... há informações lá fora (e neste tópico) sobre como definir network.http.use-cache como false ... mas na minha versão do FF (53) essa configuração não existe mais ... Essa técnica é muito superior de qualquer forma.
mike roedor
7

Se você estiver trabalhando com o código do lado do servidor, poderá gerar um número aleatório e anexá-lo ao final do src da seguinte maneira ....

src = "yourJavascriptFile.js? randomNumber = 434534"

com o randomNumber sendo gerado aleatoriamente a cada vez.

RekrowYnapmoc
fonte
Essa é a única solução que funcionou para mim, além de limpar o cache do navegador manualmente toda vez que atualizo.
Curtis
4

Sei que estou ressuscitando uma pergunta antiga, mas estava tentando resolver esse problema hoje e tenho uma solução alternativa. Alternar o cache quando eu quero testar não era realmente aceitável para mim e, como outros mencionaram, a atualização intensa (ctrl + shift + r) nem sempre funciona.

Em vez disso, optei por colocar o seguinte no meu arquivo vhost.conf (também pode ser feito em .htaccess) no meu ambiente de desenvolvimento:

<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

No meu ambiente de desenvolvimento, isso garante que js e css sejam sempre recuperados. Além disso, ele não afeta o resto da minha navegação, e também funciona para todos os navegadores; portanto, testar no chrome / etc também é fácil.

Encontre aqui o trecho, outros truques úteis do apache: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Para garantir que meus clientes sempre vejam a versão mais recente em produção, incrementamos a string de consulta no js include em cada atualização, ou seja,

jquery.somefile.js?v=0.5

Isso força os navegadores dos meus clientes a atualizar seu cache local quando eles veem uma nova string de consulta, mas, em seguida, armazena em cache a nova cópia até que o arquivo seja atualizado novamente

Kevin Jhangiani
fonte
3

A melhor estratégia é projetar seu site para criar um URL exclusivo para seus arquivos JS, que é redefinido sempre que houver uma alteração. Dessa forma, ele é armazenado em cache quando não há alterações, mas é recarregado imediatamente quando ocorre alguma alteração.

Você precisaria ajustar suas ferramentas de ambiente específicas, mas se você estiver usando PHP / Apache, aqui está uma ótima solução para você e para os usuários finais.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/

scunliffe
fonte
3

Você pode usar CTRL- F5para recarregar ignorando o cache.

Você pode definir as preferências no firefox para não usar o cache

network.http.use-cache = false

Você pode configurar o servidor da Web para enviar cabeçalhos sem cache / Expira em / Controle de Cache para os arquivos js.

Aqui está um exemplo para o servidor web apache.

Pat
fonte
é esse shift-f5 ou ctrl-f5?
Thilo
3

Se você usa o FireBug, no menu suspenso da guia Rede, há uma opção para desativar o cache do navegador.

insira a descrição da imagem aqui

Nerdroid
fonte
O Firebug foi descontinuado.
K7AAY
1

Existem prós e contras nas duas últimas soluções postadas, mas ambas são ótimas soluções da IMHO.

  1. Você pode ou não querer que o ID da sua sessão seja incorporado ao seu URL dessa maneira, para aumentar a segurança. Mas no desenvolvimento isso não deveria importar, mas e se você esquecer de removê-lo? Também isso realmente funciona? Você não precisaria de algo como um gerador de números seqüenciais (contagem de hits armazenada na sessão ou talvez apenas se 1 então 0, se 0 então 1)?

  2. Adicionar um ID de sessão (ou qualquer sequenciador) significa que você deve se lembrar de adicioná-lo a todos os recursos que não deseja que sejam armazenados em cache. Por um lado, isso é melhor, porque você pode incluir apenas o ID da sessão com apenas esse recurso que está desenvolvendo e testando ativamente. Por outro lado, isso significa que você deve fazer isso e lembrar de removê-lo para produção.

  3. A modificação do arquivo vhost.conf ou .htaccess funciona bem sem a necessidade de lembrar de adicionar e remover o ID da sessão. Mas o lado negativo é que o desempenho de todos os recursos js e css será afetado e, se você tiver arquivos grandes, isso diminuirá sua velocidade.

Ambas parecem ótimas soluções elegantes - depende de suas necessidades.

meem
fonte
1

Eu uso CTRL- SHIFT- DELETEque ativa o recurso de privacidade, permitindo limpar o cache, redefinir cookies, etc., de uma só vez. Você pode até configurá-lo de modo que simplesmente o faça, em vez de abrir uma caixa de diálogo solicitando a confirmação.

Sr. Brilhante e Novo 安 宇
fonte
1

Nas versões superiores do Firefox, como Nightly, há opções denominadas "desativar cache", você pode encontrá-lo clicando na engrenagem. E essas opções funcionam apenas na sessão atual, o que significa que, quando você fecha o inspetor e o reinicia, é necessário verificar novamente se deseja desativar a captura.

jiyinyiyong
fonte
Eu gostaria que houvesse uma maneira de desativar o cache globalmente. É muito chato ter que checar toda vez que abro o inspetor.
Carlos Garcia
0

Após 2 horas de busca por várias alternativas, isso é algo que funcionou para mim.

Meu requisito era desabilitar o cache de arquivos js e css no meu aplicativo da web protegido por primavera. Mas, ao mesmo tempo, armazena em cache esses arquivos "dentro" de uma sessão específica.

Passar um ID exclusivo a cada solicitação é uma das abordagens recomendadas.

E foi o que eu fiz: - Em vez de

<script language="javascript" src="js/home.js"></script>

eu usei

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Quaisquer contras à abordagem acima são bem-vindos. Problemas de segurança ?

Darshan
fonte
0

No firefox 45, as opções de cache do disco podem ser definidas alterando o valor de: browser.cache.disk.enable

O valor pode ser definido na página "about: config".

Em http://kb.mozillazine.org/About:config_entries#Browser , encontrei a seguinte descrição para "browser.cache.disk.enable":

Verdadeiro (padrão): use cache de disco, até a capacidade especificada em browser.cache.disk.capacity Falso: desative o cache de disco (o mesmo efeito que definir browser.cache.disk.capacity para 0)

Daniel
fonte
0

Antes de tudo, isso pode ser feito facilmente, por exemplo, por PHP, forçar o navegador a renovar arquivos com base na data do cache (tempo de expiração). Se você precisar apenas para necessidades experimentais, tente usar ctrl + shift + del para limpar todo o cache de uma vez no navegador Firefox. A terceira solução é usar muitos complementos que saem do Firefox para limpar o cache com base nas linhas do tempo.

Amir Ghorbani
fonte