Blog da Softblue


Este artigo foi criado por Andre Milani.
Conheça o currículo completo do instrutor clicando aqui.

PHP e arquivos em cache

Publicado em 06/04/2010 às 18:18:13 horas.

Compartilhe:    

Olá pessoal! Meu nome é André Milani, sou autor de livros de bancos de dados e programação e também instrutor da Softblue. Este é o meu blog pessoal onde pretendo abordar temas de tecnologia na área de programação e desenvolvimento de softwares, em especial o PHP, SQL e assuntos referentes a bancos de dados.

Neste primeiro post eu gostaria de compartilhar uma situação que aconteceu com um leitor do meu livro de PHP e MySQL sobre cache. Levamos um bom tempo para conseguir detectar que o problema não estava no código PHP, mas sim no cache do navegador. Então, para prevenir este problema, vão aí algumas dicas bem interessantes:

Forçando um refresh
Muitos sabem que a tecla F5 dos navegadores, pelo menos na maioria deles, serve para atualizar a página. Este procedimento é chamado de refresh (nome em inglês). O que nem todos sabem é que o comando F5 realiza um refresh com base em algumas configurações de data de expiração dos arquivos em questão, e que dependendo da data, somente a tela é atualizada, mas não os conteúdos dos arquivos cujas datas ainda não expiraram.

Para resolver esta situação, utilize o comando CTRL + F5. Este comando força o refresh dos arquivos, independente da data de expiração. Ele apaga do cache de seu navegador todos os arquivos da página em questão, e solicita todos os arquivos novamente ao servidor.

Evitando o cache em PHP
Mesmo conhecendo o comando CTRL + F5, pode ser que nem todos os visitantes de nossos sites conheçam este recurso, ou ainda, saibam que a página está em cache. Por este motivo, é interessante prevenir que as páginas utilizem cache, fazendo com que seus visitantes sempre acessem as páginas com as últimas atualizações realizadas. De qualquer forma, é recomendado que o desenvolvedor estude uma política de cache para suas aplicações on-line, para quando possível, otimizar recursos dos servidores.

Para prevenir o uso do cache em PHP, utilize o comando header setando duas propriedades específicas:

 // HTTP/1.1
header("Cache-Control: no-cache, must-revalidate");

 // Date in the past
header("Expires: Sun, 11 Apr 2010 05:00:00 GMT");

A primeira propriedade é a Cache-Control, que informa ao navegador, ou qualquer proxy que possa estar no caminho do arquivo, para não armazená-lo em cache.

A segunda propriedade é a Expires, que define a data de expiração do arquivo. É possível definir uma data já passada, para que o cache já seja entendido como expirado, ou então é possível definir a sua data de expiração. Esta propriedade deve ser informada para arquivos que possuem alto volume de acesso, mas baixa taxa de atualização, o que otimiza recursos do servidor.

Vale a pena mencionar que, ao utilizar o comando header, nenhuma informação pode ser impressa antes pelo PHP, nem por meio de comando echo, print ou outro. Esta é uma particularidade do comando header, e maiores informações podem ser encontradas no manual do PHP, clicando aqui.

Comentários

Urbano, você pode utilizar os comandos ob_start e ob_flush junto com suas instruções de sessão. Dê uma olhada a respeito sobre estes comandos no manual do PHP.

Enviado em 27/01/2013 às 17:35:26 horas, por André Milani


vc diz: "Vale a pena mencionar que, ao utilizar o comando header, nenhuma informação pode ser impressa antes pelo PHP, nem por meio de comando echo, print ou outro." e quando tem um session_start() que deve ser a primeira linha? grato!!

Enviado em 27/01/2013 às 17:31:23 horas, por Urbano


Milton, você pode usar a diretiva:
[meta http-equiv="pragma" content="no-cache"]

Obs: Apenas altere os colchetes pelos símbolos de abertura e fechamento de tag do HTML (sinal de maior e menor).

Enviado em 28/10/2012 às 14:48:54 horas, por André Milani


Ola Andre achei interessante a materia que so nocache e gostaria de uma sugestão sua.
Como que eu faço para q um site q estou desenvolvendo nao fique gravado no cache do PC do cliente? Lembrando que meu site foi feito tudo em HTML. Obrigado

Enviado em 24/10/2012 às 00:26:09 horas, por Milton


Cara valew mesmo... essa informação me ajudou a resolver os problemas com os graficos do fusionchart no php...

Valew mesmo

Enviado em 06/10/2011 às 14:47:16 horas, por Agnaldo Carvalho


Olá André, bom há dois dias eu procurava algum comando que me desse uma resposta conforme a que vc passou aki, essas duas linhas foram de suma importancia para mim...
Ótima dica!!
Vlw!

Enviado em 03/08/2011 às 13:14:16 horas, por Samuel S Carvalho

Mailing List

Cadastre o seu e-mail para receber notícias e informações sobre novos cursos, atualizações e outras novidades da Softblue!

Diferenciais

Liberdade total
Estude quando e como quiser. Disponibilidade do conteúdo 24h por dia, 7 dias por semana.
Matrícula não expira
Pagamento único, sem mensalidades, e acesso vitalício a todo o conteúdo, mesmo após a conclusão do curso.
Cursos sempre atualizados
Acesso às atualizações dos cursos de forma automática.
Tire suas dúvidas
Suporte eficiente para esclarecer suas dúvidas no decorrer do curso.
Padrão de qualidade
Atendimento diferenciado e material de alta qualidade, feito por quem entende do assunto.

Certificado

Insira o código do certificado que deseja consultar:

Pagamento





Conheça todas as nossas formas de pagamento.


             Cursos  |   Perguntas  |   Sobre nós  |   Sorteios  |   Blog  |   Política de Privacidade  |   Contato Desde 2003.    
Todos os direitos reservados ®    
CNPJ 06.860.085/0001-64