Jump to content

Sistema de cache para sites


Recommended Posts

Acelere o carregamento de seu site com PHP Caching!

Também conhecido como Cache de Objetos, essa técnica executa uma página PHP e armazena o conteúdo gerado em um arquivo HTML, e para os próximos acessos, durante um certo período, o servidor irá entregar esse HTML gerado.

Sem a necessidade de consultar o banco de dados ou executar algum tipo de programação para montar a página, o servidor além de conseguir entregar uma página mais rapidamente, também suportará um número maior de acessos concorrentes.

phpcaching-diagrama-de-atividades.jpg

Desenvolvimento:

Vou fazer um exemplo com script de  TOP PVP:

Na raiz do site crie uma pasta com nome de "cache" e outra com nome de "pages".

dentro de pages coloque o script de toppvp.php: 

Download: https://mega.nz/#!rEIS1AAJ!MiF3ZJFzRuLlvGAZc1V1cGJJ8988qH0uSkz2Lcw_AYI

na raiz do site crie um arquivo com nome de index.php (ou qualquer outro nome que desejar):

Download: https://mega.nz/#!KJQRGKpA!OCokF2619lf5O5xw2TmtPjtrLd-uXatHSN8c74r9clg

Obs:
Não esqueçam de editar o script de acordo com as suas configurações de conexão com banco de dados.
No arquivo index você deve configurar de acordo com os comentários que deixei lá! 

Coloque o site para rodar e faça o teste. Você vai notar uma mensagem na página:
Este ranking foi atualizado em 24/01/2019 as 15:25:04" 

Pronto. 

Edited by L2Raiz
removendo pagina do facebook
  • Like 1

Curta a página do L2 Feel no Facebook

Link to comment
Share on other sites


 

Cloudflare faz isso no site inteiro sem colocar nada nele!

Pensando no que você comentou, fiz um código para fazer no "site inteiro". 
Na raiz do site eu criei um arquivo com nome de "site.php":

<?php 
	if(isset($_GET['page'])) 
    {
		$page=$_GET['page'];
	if ($page=="boss") 
    {
		include('pages/boss.php');
	}
	if ($page=="toppvp") 
    {
		include('pages/toppvp.php');
	}	
	if ($page=="toppk") 
    {
		include('pages/toppk.php');
	}
	else
    {			
		include('includes/center.php');
	}
?>

Ou seja, se a url da página existir "?page=boss" ou "?page=toppvp" etc... 
Ele vai incluir a página que está na pasta "pages".
Se não existir o "?page=", ele vai incluir o "center.php" da pasta includes.

dai meu arquivo index.php com o cache ficou assim:

<?php
// Configurações
if(isset($_GET['page'])) 
{
	$page=$_GET['page'];
if ($page=="boss") 
{
	$pagina = "boss";
}
if ($page=="toppvp") 
{
	$pagina = "toppvp";
}	
if ($page=="toppk") 
{
	$pagina = "toppk";
}
$get = "site.php?page=";
$validadeEmSegundos = 600; // 5 minutos para rankings
}
else {
$validadeEmSegundos = 10; // 10 segundos na pagina incial
$pagina = "site.php";
$get = "";
}
$arquivoCache = 'phpcaching/'.$pagina.'.html';
$urlDinamica = 'm99:8080/'.$get.''.$pagina.'#rank'; //Meu endereço local (se você tem um site online, coloque o endereço online ali "www".

// Verifica se o arquivo cache existe e se ainda é válido
if (file_exists($arquivoCache) && (filemtime($arquivoCache) > time() - $validadeEmSegundos)) {

    // Lê o arquivo cacheado
    $conteudo = file_get_contents($arquivoCache);
} else {

    // Acessa a versão dinâmica
    $conteudo = file_get_contents($urlDinamica);

    // Cria o cache
    file_put_contents($arquivoCache, $conteudo);
}

// Exibe o conteúdo da página
echo $conteudo;

Dessa forma consegui fazer ficar em todas as páginas do site! 

Edited by L2Raiz

Curta a página do L2 Feel no Facebook

Link to comment
Share on other sites

Não entenda meu comentário como critica, longe disso.

O grande problema e que a grande maioria dos membros não domina 40% de servidores e quando parte para area web 15% tem o conhecimento básico para criar ou adaptar certas coisas.

Bela iniciativa, só mencionei o Cloudflare pela questão da facilidade que muitos procuram, ao que aprender algo novo e util.

Abraços

  • Thanks 1
Link to comment
Share on other sites

 

Não entenda meu comentário como critica, longe disso.

O grande problema e que a grande maioria dos membros não domina 40% de servidores e quando parte para area web 15% tem o conhecimento básico para criar ou adaptar certas coisas.

Bela iniciativa, só mencionei o Cloudflare pela questão da facilidade que muitos procuram, ao que aprender algo novo e util.

Abraços

Eu curti seu comentário. Até porque eu não conhecia o "Cloudflare". Conhecimento nunca é de mais hahaha   

Curta a página do L2 Feel no Facebook

Link to comment
Share on other sites




  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Poh passa pra mim, eu não tenho interesse em nada sobre essas coisas, apenas estou rodando o forum que nem louco pra achar uma rev boa pra jogar só eu e minha esposa 😕 Dou minha palavra que não tenho vontade nenhuma de repassar ja que esse tipo de coisa anda rolando na comunidade 😕 Se puder eu agradeço,senao nao tem problema eu entendo completamente ^^ Meu Discord: xii_gaia_iix
    • Olá a todos gostaria de informa que demos um tempo no projeto mais já estamos voltando ativa com uma revisão estável e 100% limpa de mods. Não iremos disponibilizar a soucer do projeto devido a uns caras malandros aqui que já esta vendendo a revisão sem nem esta estável.
    • podes subir denuevo la data por favor 
    • UP!!! Vou Reupar em breve, tive que recriar o app... 
    • Sobre o rate limit. Antes de tudo, é importante entender o seguinte: o SphereAPI é um cluster — não é apenas um único servidor. Existe um servidor público por padrão, mas os outros IPs dos servidores da Sphere são ocultos por questões de segurança e são adicionados manualmente no painel de administração, especificando o IP e a PORTA. Dessa forma, evitamos ataques DDoS. O SphereAPI trabalha de forma paralela, mesmo que os servidores não estejam diretamente conectados entre si. Se alguém tentar fazer um ataque DDoS a um dos servidores da Sphere, isso não afetará os clientes do SphereWeb que estão em outros servidores. O próprio SphereAPI foi escrito na linguagem Golang para distribuir ao máximo a carga, utilizar concorrência e multiprocessamento. Atualmente, no servidor público, tenho dezenas e dezenas de sites conectados, e a cada segundo o Sphere executa requisições e gerencia conexões, enquanto o SphereAPI consome apenas 27MB de RAM. Eu considero isso um bom resultado do meu trabalho. Dos sites SphereWeb, só recebo requisições quando realmente necessário. Se algum site de servidor for alvo de um ataque DDoS, isso não afeta a Sphere de forma alguma.  
    • obg pelas, informações.  desculpe o excesso de perguntas. normalmente as pessoas nao fazem perguntas tao tecnicas, e acabam por desconherem o nivel grande do projeto que estao usando. gosto de fazer essas perguntas, para que fique registrado e as pessoas possam ver depois. sem precisar perguntar novamente : D vc fez algum tipo de ratelimit ?
    • SphereAPI (ela processa todas as conexões) faz consultas ao banco de dados somente quando necessário. Nós armazenamos todos os dados em cache, assim as consultas só são feitas quando o cache está desatualizado. Simplificando: se 100 pessoas acessarem sua página de estatísticas em 1 minuto, a consulta para obter os dados será feita apenas uma vez. E o resultado da consulta é armazenado tanto na memória da SphereAPI quanto da SphereWeb.
    • quais foram as tecnicas que vc usou para evitar excesso de consultas, tais como tops e afins que fazem JOIN nas tabelas, e podem causar lentidão ?
    • Se o servidor da Sphere não conseguir se conectar ou perder a conexão com o banco de dados do servidor de jogo, ou não conseguir executar uma consulta SQL, então o SphereWeb mostrará que o servidor está indisponível no painel de lista de servidores da administração. Na área administrativa será exibida a mensagem de erro, indicando a causa do problema. E se for um erro de consulta SQL, a consulta será pausada para evitar novas tentativas com erro no banco de dados do servidor. A Sphere aguardará até que o problema seja resolvido – ou seja, até que o erro seja corrigido. Depois disso, será possível limpar a lista de erros, e a Sphere tentará se conectar novamente.   Vale destacar que, para otimização, a API da Sphere mantém uma conexão permanente com o banco de dados do servidor de jogo enquanto o site estiver sendo acessado. Se ninguém acessar seu site por mais de 15 minutos, a Sphere se desconectará do banco de dados do jogo e só se reconectará quando alguém acessar novamente.   Provavelmente não expliquei tudo de forma clara, pois há muitos detalhes que não mencionei.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.