Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Walquíria

Impedir cache de página

Recommended Posts

Olá!!!Estou com um grande problema com cache de páginas.Tenho que impedir que o usuário possa voltar a uma página anterior. A intenção é que apareça aquela mensagem de página expirada.Usei esse código<%response.AddHeader "pragma", "no-cache"response.Buffer=falseResponse.ExpiresAbsolute = Now() - 1Response.Expires = 0Response.CacheControl = false%> Mas mesmo assim não funcionou!!!Alguém sabe o porque e o que eu devo fazer pra funcionar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

<%Response.Buffer = TrueResponse.Expires = 0 Response.Expiresabsolute = Now() - 1 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "no-cache"%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada, mas ainda não funcionou. Eu clico no botão "voltar" e lá está a página anterior...

Ao invés de 0, tenta trocar o Response.Expires para 1.AbraçosCassiano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oláo que exatamente você pretende fazer?acho que isso de não permitir voltar.. somente limpando o cache.. nao vai resolvermas tb nao sei te dizer como fazer isso funcionar.. já tentei algumas coisas.. e nunca consegui sucesso.A unica maneira que encontrei, foi carregar as paginas usando Javascript .. e Ajax.Assim.. o voltar se torna praticamente inutil.. pois você sempre estara na mesma pagina.. e só navegando entre funções javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

oláo que exatamente você pretende fazer?acho que isso de não permitir voltar.. somente limpando o cache.. nao vai resolvermas tb nao sei te dizer como fazer isso funcionar.. já tentei algumas coisas.. e nunca consegui sucesso.A unica maneira que encontrei, foi carregar as paginas usando Javascript .. e Ajax.Assim.. o voltar se torna praticamente inutil.. pois você sempre estara na mesma pagina.. e só navegando entre funções javascript

Pelo que entendi ela não quer impedir que volte. Quer apenas que se tentar voltar, dê o aviso de que a página expirou, pra que a pessoa não consiga fazer nada.Realmente se ela quiser impedir que volte, não acredito que seja possível.Acho que o Response.Expires = -1 resolve no caso dela.. pois esse Atributo indica o tempo que a página vai demorar pra expirar. Se colocar -1, expira imediatamente.Enfim, não testei.. mas acho que resolveria.AbraçosCassiano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é.. pode ser que resolva simmas depende muito do script..me diz uma coisa. se ela tiver uma pagina que traga muitos registros na tela.. ela nao expiraria antes de terminar de carregar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é.. pode ser que resolva simmas depende muito do script..me diz uma coisa. se ela tiver uma pagina que traga muitos registros na tela.. ela nao expiraria antes de terminar de carregar?

Acredito que sim, mas até mesmo se tiver poucos registros. Teoricamente mesmo q seja uma página muito leve, ela já nasce expirada. Mas isso de estar ou não expirada, se refere apenas ao cache do browser. Quando uma página expira, ela sai do cache, mas vai continuar funcionando normalmente na sessão atual, mesmo que seja uma página pesada. E assim, o browser passa a buscar uma nova versão dessa página no próximo acesso, desconsiderando o cache. Então se o usuário voltar, a página estaria expirada e apareceria aquela mensagem de que a página expirou.=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei o Response.Expires = -1mesmo assim, a página não expira.O que eu preciso é apenas que o usuário, ao clicar em voltar, econtre a mensagem página expirada.Teoricamente o "response.expires=-1" teria que funcionar.Não entendo o que está acontecendo e o porque de não está dando certo...:/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei o Response.Expires = -1mesmo assim, a página não expira.O que eu preciso é apenas que o usuário, ao clicar em voltar, econtre a mensagem página expirada.Teoricamente o "response.expires=-1" teria que funcionar.Não entendo o que está acontecendo e o porque de não está dando certo...:/

WalquíriaResolvi fazer uns testes aqui.. e realmente não aparece a mensagem que você queria que aparecesse. Fiz umas pesquisas aqui, e no site da microsoft diz que essa mensagem na verdade é um bug do IIS 4.0, e que nas versões mais novas não ocorre mais.Então não é possível fazermos nada que faça com que essa mensagem apareça.. pois apenas a versão mais antiga do IIS, e dependendo ainda da versão e configuração do browser do usuário, é que essa mensagem apareceria. Em servidores que usam IIS acima da versão 4.0, isso não acontece mais.Pelo menos é o que pode ser visto por exemplo em:http://support.microsoft.com/kb/183763/en-usMas li outros artigos também no site da microsoft sobre esse assunto, e pelo que vi, aquela página que você queria que aparecesse é tratada como erro, e não como um artifício que a gente possa usar.Usando esses comandos de cache, você consegue garantir que a página não vai ficar em cache, porém não tem como mostrar aquela mensagem.Pra resolver seu problema então.. acho que você teria que usar uma variável de sessão que seria setada na primeira vez que o usuário visitasse a página.. e a partir da segunda vez, não deixaria mais.Algo tipo:
If Session("sPrimeiroAcesso") Then   Session("sPrimeiroAcesso") = FalseElse   Response.Redirect("qualquerPagina.asp")End If
Lembre-se que isso vai fazer com que a página só possa ser acessada uma vez enquanto valer a sessão. Caso haja alguma situação que permita que o usuário acesse novamente essa página (Sem ser usando o voltar, é claro) é só você setar a variável Session("sPrimeiroAcesso") = True novamente (na página inicial por exemplo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, é exatamente isso que está acontecendo.

Muito obrigada pelo esclarecimento.mas, meu problema persiste.No meu caso o usuário pode acessar a página quantas vezes ele quiser, então não posso usar essa solução (que é muito boa).Será que teria como detectar que o usuário clicou no botão de voltar? Ou melhor, saber que ele voltou a página?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, é exatamente isso que está acontecendo.

Muito obrigada pelo esclarecimento.mas, meu problema persiste.No meu caso o usuário pode acessar a página quantas vezes ele quiser, então não posso usar essa solução (que é muito boa).Será que teria como detectar que o usuário clicou no botão de voltar? Ou melhor, saber que ele voltou a página?
Será que não dá mesmo pra usar?Dê uma estudada no fluxo de navegação do seu sistema... tipo.. de onde o usuário vem quando acessa essa página que você quer impedir a volta?Por exemplo... vamos supor que existam 3 paginas.A - Página InicialB - Página que você quer impedir a voltaC - Página de resultado (onde o usuário clica no voltar)Na página A você seta a variável de sessão pra True. ou seja.. sempre que o usuário passar por ela (antes de chegar na página B) ele poderá acessar normalmente.E na página B.. fica o código que te falei.. assim ele vai acessar normalmente, e vai atingir a página C. Se ele tentar voltar de C pra B, o sistema não vai deixar, e vai jogar ele pra página A.A partir daí, ele pode voltar e acessar a página B novamente.Acho que só vai ficar difícil você implementar algo desse tipo, caso o acesso à essa página B possa ser feito de qualquer lugar, através de um menu por exemplo.. aí teríamos q pensar em outra coisa..

Compartilhar este post


Link para o post
Compartilhar em outros sites

O probelma é que eu preciso desse código em várias páginas (mais de 20)...aí já viu neh...Vou dar uma pesquisada hj mais a tarde sobre o que eu posso encontrar.Qualquer coisa que vcs encontrarem me avise.Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um include tiozinho em todas as paginas assim voce so mexe no codigo uma vez se precisar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não dá nem pra usar como include, porque são várias páginas desse tipo.É uma área inteira, que pode ser acessada através de menu, até.Não encontrei nehuma solução pra isso. Os códigos que encontrei obrigam a página a ser recarregada, mas não deixam de exibir ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o problema se resolve colocando script em cada página e são muitas....crie uma rotina em FSO para incluir nas páginas o código desejado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não dá nem pra usar como include, porque são várias páginas desse tipo.É uma área inteira, que pode ser acessada através de menu, até.Não encontrei nehuma solução pra isso. Os códigos que encontrei obrigam a página a ser recarregada, mas não deixam de exibir ela.

WalquíriaFiz um teste aqui e consegui o que você quer.Na verdade vai ter que ser feita uma combinação entre o que dizemos acima, e uma verificação do HTTP_REFERER (Página que o usuário estava antes de chegar na página atual)No início da página para a qual o usuário não pode voltar, coloque:
Response.Buffer = TrueResponse.Expires = -1Response.Expiresabsolute = Now() - 1 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "no-cache"'Aqui é feito o teste, se o usuário voltou (HTTP_REFERER = ""), redireciona para a página inicial.If Request.ServerVariables("HTTP_REFERER") = "" Then	Response.Redirect("default.asp")End If
Testa aí... acredito que agora funciona.Abraços,Cassiano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já tentei usar algo do tipo, mas o HTTP_REFERER retorna vazio quando usamos redirect.E em algumas páginas eu uso esse comando...:/Se tivesse alguma forma de saber se ele foi redirecionado ou se ele clicou no botão de voltar, ai a gente tratava...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já tentei usar algo do tipo, mas o HTTP_REFERER retorna vazio quando usamos redirect.E em algumas páginas eu uso esse comando...:/Se tivesse alguma forma de saber se ele foi redirecionado ou se ele clicou no botão de voltar, ai a gente tratava...

Sim...Mas foi esse justamente o teste que eu fiz.. se você colocar o código que te passei, no início da página para a qual ele não pode voltar, vai dar certo.Quando a pessoa volta e a página não existe no cache do browser, como o HTTP-REFERER vai estar vazio, o browser não vai encontrar a página e vai dar aquele erro que você queria.Eu fiz umas simulações aqui e funcionou legal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.