Uma forma de aumentar a rapidez do teu site de forma exponencial é com recurso a cache de pedidos remotos e internos.
Porquê fazer a mesma solicitação à Base de Dado a cada vez que a página é carregada se a mesma raramente muda?
Criei uma função que verifica se há novos conteúdos na cache e retorna o conteúdo de uma fonte se novos conteúdos não estiverem disponíveis.

A Função PHP

/* obtem o conteudo de um ficheiro se ele existir, caso contrário coloca em cache */
function obter_conteudo($ficheiro,$link,$horas = 24,$fn = '',$fn_args = '')
{
	//variáveis
	$hora_actual = time(); $hora_expira = $horas * 60 * 60; $hora_ficheiro = filemtime($ficheiro);
	//decisões
	if(file_exists($ficheiro) && ($hora_actual - $hora_expira < $hora_ficheiro)) {
		//echo 'retorna a cache do ficheiro';
		return file_get_contents($ficheiro);
	}
	else
	{
		$conteudo = obter_link($link);
		if($fn){ $conteudo = $fn($conteudo,$fn_args); }
		$conteudo.= '<!-- cached:  '.time().'-->';
		file_put_contents($ficheiro,$conteudo);
		//echo 'retorna o novo conteudo de '.$link.':: '.$conteudo;
		return $conteudo;
	}
}

/* obtem o conteudo do link com recurso a curl */
function obter_link($link)
{
	$ch = curl_init();
	curl_setopt($ch,CURLOPT_URL,$link);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
	$conteudo = curl_exec($ch);
	curl_close($ch);
	return $conteudo;
}

A minha função obter_conteudo aceita quatro argumentos:

  1. O ficheiro para obter o conteúdo. Se esse ficheiro não existir, o ficheiro é criado e com esse mesmo conteúdo.
  2. O LINK do qual vamos obter o conteúdo se o conteúdo que estiver em cache não for recente.
  3. O nome da função para passar o conteúdo recente.
  4. Os argumentos a passar para o terceiro argumento da função

A função é, naturalmente, muito “primitiva”.
Porém eu gosto da minha função porque ela tanto trata da recuperação e do armazenamento em cache para que eu não precise de repetir o código sempre que queira colocar conteúdo em cache.

Existem muitas (e mais avançadas) classes em PHP para manipulação de cache disponíveis, mas a minha função acima abrange a maior parte das minhas necessidades.

Espero que também te ajude!


Muito FracoFracoRazoávelBomMuito Bom (1 votos, média: 5,00 num total de 5)
Loading ... Loading ...