Ir para conteúdo

Arquivado

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

Wellington dos Anjos

Cache no PHP

Recommended Posts

Olá a todos!

 

Este é meu primeiro tópico no fórum, mas já li diversos tópicos como visitante aqui no iMasters. Posso dizer que tenho conhecimento básico no PHP, e estou aprendendo mais a cada dia (e gostando muito). :)

 

Indo direto ao assunto: estou com dificuldades em usar Cache no PHP.

Dei uma pesquisada no Google e encontrei algumas ferramentas. A que mais gostei foi a "PHP Fast Cache", pois achei simples de usar.

Mesmo assim, tive alguns problemas em utilizá-la...

 

No próprio site da ferramenta há alguns exemplos, como abaixo:

<?php
    // In your config file
    include("phpfastcache.php");
    // phpFastCache::setup("storage","redis"); default global for everywhere.
    // phpFastCache support "redis", "cookie", "apc", "memcache", "memcached", "wincache" ,"files", "sqlite" and "xcache"
    
    // You don't need to change your code when you change your caching system, blank will use default global:
    $cache = phpFastCache(); 
    // $cache = phpFastCache("memcache");

    // In your Class, Functions, PHP Pages
    // try to get from Cache first. product_page = YOUR Identity Keyword
    $products = $cache->get("product_page");

    if($products == null) {
        $products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;
        // set products in to cache in 600 seconds = 10 minutes and 0 = never expired
        $cache->set("product_page", $products,600);
    }

    // Output Your Contents $products HERE
    // LOOP | echo $products 

Estou com uma dúvida que acredito ser muito básica: na primeira linha há um comentário dizendo para adicionar o include da classe no meu arquivo de configuração, mas eu não tenho ou não sei se tenho este arquivo. :unsure:

 

Poderiam me ajudar a fazer esta classe funcionar? Ou então, se vocês conhecem uma forma mais fácil de usar Cache no PHP, estou aberto a sugestões.

 

Desde já agradeço a todos que me ajudarem! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wellington, seja bem-vindo ao fórum. E parabéns por seu primeiro post já estar dentro das regras e ser claro. ;)

 

O include que é citado no exemplo é basicamente a biblioteca. Eles dizem para você inserir no seu arquivo de configuração, pois esse arquivo geralmente é criado para armazenar dados do banco de dados e outras informações e todos os outros arquivos incluem ele posteriormente. Assim você teria o cache disponível por toda sua aplicação, mas você pode inserir aquela linha onde você preferir.

 

Você sabe que precisa ter uma aplicação cache instalada no seu servidor, correto? No caso, essa lib suporta esses: Redis, Predis, Cookie, Files, MemCache, MemCached, APC, WinCache, X-Cache, PDO with SQLite.

 

Fuja de PDO, SQLite, Files, Cookie... Senão não faz tanto sentido utilizar cache. Eu daria preferência ao Redis, APC e MemCache(d).

 

Abs e bons estudos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Matheus! Obrigado por responder, e fico feliz em ter sido um bom aluno, rs. :D

Você sabe que precisa ter uma aplicação cache instalada no seu servidor, correto? No caso, essa lib suporta esses: Redis, Predis, Cookie, Files, MemCache, MemCached, APC, WinCache, X-Cache, PDO with SQLite.

Fuja de PDO, SQLite, Files, Cookie... Senão não faz tanto sentido utilizar cache. Eu daria preferência ao Redis, APC e MemCache(d).

 

Ah, então aí está o problema! Não sabia que precisava instalar uma aplicação Cache... :mellow:

Você pode me indicar alguma?

 

PS.: No momento estou trabalhando nesse projeto localmente (wamp), mas o objetivo é criar um site de verdade com PHP+MySQL. Portanto, terei de instalar essa aplicação Cache no servidor que escolher. Você pode me indicar alguns serviços?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, Wellington.

Talvez você esteja colocando a carroça na frente dos bois.

No desenvolvimento web existem diversos tipos de caches que podem ser feitos e talvez você esteja confundindo as coisas.

 

Portanto, terei de instalar essa aplicação Cache no servidor que escolher. Você pode me indicar alguns serviços?

 

Você ainda não tinha certeza de como utilizar a classe que você citou. Como tem tanta certeza de que precisa instalar essa ferramenta?

 

Quando criamos uma aplicação média/grande, fazemos operações que demandam consumo de recursos de máquina ou que levam tempo para serem processadas. Dependendo do propósito do sistema, podemos armazenar a saída que foi gerada no processamento anterior para exibição no próximo X tempo. Isso significa que somente uma vez a cada X tempo (por ex, 1 hora) aquela operação será de fato processada.

 

Portais de notícias utilizam muito essa ferramenta, por exemplo, pois o conteúdo que eles exibem não precisa estar sempre atualizado. Digo, em linhas gerais, um usuário pode acessar um artigo qualquer que sofreu alguma pequena atualização há alguns minutos, mas poderá ser visualizada efetivamente somente mais tarde (o tempo é definido conforme necessidade). Enquanto esse momento não chega, todos os usuários acessam a versão que está armazenada em cache, caso não existam outras regras por parte da aplicação.

 

Tudo isso é bem diferente do cache que você pode fazer nos seus css, js, etc, por exemplo.

 

Se isso que eu expliquei é exatamente o que você quer, eu recomendo você dar uma olhada naqueles que eu citei no post anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Matheus, vou tentar explicar um pouco do meu projeto:

 

Tenho uma página com alguns dados (gráficos, blocos com valor, etc) lidos do MySQL. Esses dados serão atualizados a cada 5 minutos. Nesse meio tempo quero que os usuários vejam dados em Cache para não realizar consultas ao banco sem necessidade.

 

Portanto, é exatamente o que você me explicou. Vou me informar sobre as aplicações que você recomendou (Redis, APC, memcache, e memcached). Você já usou alguma dessas ou tem alguma favorita?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm, entendi.

Perfeito, nesse caso eu te indico, por ordem:

 

1 - APC, pela simplicidade. (Instalação)

2 - Memcache(d) - pelo mesmo motivo.

3 - Redis, apesar de ele ser o mais poderoso e o mais recente, ele é o que tem mais recursos e é o mais avançado. Não creio que seja necessário.

 

Em termos de performance, existem diversos testes e as opiniões se dividem, então é indiferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por kernmatheus
      Boa noite,
       
      Galera, utilizo uma aplicação que me permite inserir arquivos JavaScript customizados em algumas páginas, e por vezes quando realizo alguma alteração considerável no JS, preciso solicitar aos usuários da ferramenta para limparem o cache, evitando que eles fiquem com as regras antigas do JS e gere algum erro.
       
      Existe alguma forma de esporadicamente quando eu realizar alterações no JS, forçar a limpeza de cache nas máquinas clientes? Ou então de não permitir que o navegador salve cache deste JS que eu customizo as regras?
    • Por LucasLV
      Olá.
      Tenho um site onde as imagens são geradas através de um arquivo PHP - utilizo esse método para retornar imagens webp ou jpg - e vi que o navegador não utiliza, ou não salva em cache, as imagens geradas dessa forma.
      Já as onde informo o caminho completo da imagem com a extensão, aparecem como utilizadas do cache.

      Esse comportamento é normal quando as imagens são geradas desse jeito ou é por não ter feito nenhuma configuração de cache no arquivo PHP que gera as imagens?
       
      Coloquei uma imagem do resultado exibido no navegador.

    • Por Fernando_Henrique
      Olá amigos
      Estou com um pequeno problema em um sistema PHP. 
      Periodicamente venho fazendo algumas atualizações no sistema web como alteração nos arquivos html, js e css porém como esperado essas alterações não são sentidas nos navegadores da maioria dos clientes, até que eles limpem o cache ou CRTL + F5. Assim estou tendo grandes problemas, pois além do layout do sistema, também esta afetando mascaras como por exemplo campos de preço onde deveria auto preencher com formato de preço(R$ 0,00), algumas regras como por exemplo campos que devem ser convertidos para letras maiúsculas. Pra resolver esse problema comecei a versionar os arquivos há cada atualização, assim foi resolvido na maioria dos navegadores, porém ainda tenho casos que o problema persiste. 
      Alguma dica do que mais pode ser feito para que consiga afetar todos os clientes ? 
       
    • Por user2112
      Pessoal, estou iniciando em JS e fazendo meus scripts no bloco de notas mesmo. Depois vou simplesmente abrir o .html pra ver o resultado.
       
      Mas as vezes ocorre de eu atualizar o arquivo .js e quando vou rodar o .html, ele ainda não atualizou minha mudança, como se tivesse cacheado uma versão antiga do .html
      Então tenho que dar refresh várias e várias vezes pra ver a mudança.
       
      Como vocês lidavam com isso?
    • Por avner.max
      Preciso desenvolver um simulador de cache, onde eu consiga testar o desempenho de algoritmos de ordenação (Quick sort, Selection sort e Bubble sort) em relação a memória cache e imprimir a taxa de Cache Miss e Cache Hit de leitura e gravação de cada um dos três algoritmos.
      Minha dúvida é, como fica o algoritmo de ordenação nesse caso?
       
      São passados para a escolha do usuário os seguintes dados: Quantidade máxima de palavras na cache (tamanho da cache), quantidade de palavras por bloco, tipo de mapeamento, tipo de associatividade, política de substituição e política de escrita.
      Preciso fazer o algoritmo de ordenação cumprir cada um deles, quando for ler/gravar no vetor que representa a cache e no vetor que representa a memória. Porém não estou conseguindo imaginar como deve ficar o algoritmo de ordenação.
       
      Se alguém puder me dar uma luz, iria ficar muito agradecido!
      Grande abraço a todos.
×

Informação importante

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