saída cache HTML com PHP

votos
3

Eu gostaria de criar um cache para minhas páginas PHP no meu site. Eu havia muitas soluções, mas o que eu quero é um script que pode gerar uma página HTML do meu banco de dados ex:

Eu tenho uma página de categorias que pega todas as categorias do DB, então o script deve ser capaz de gerar uma página HTML do tipo: my-categories.html. em seguida, se eu escolher uma categoria que eu deveria ter uma página meu-x-category.html e assim por diante e assim por diante para as outras categorias e subcategorias.

Eu posso ver que alguns sites têm URLs como: wwww.the-web-site.com/the-page-ex.html

mesmo que eles são dinâmicos.

Muito obrigado pela ajuda

Publicado 10/12/2008 em 12:58
fonte usuário
Em outras línguas...                            


8 respostas

votos
1

Eu uso APC para toda a minha caching PHP (em um servidor Apache)

Respondeu 10/12/2008 em 13:08
fonte usuário

votos
7

verificar ob_start () função

ob_start();
echo 'some_output';
$content = ob_get_contents();
ob_end_clean();

echo 'Content generated :'.$content;
Respondeu 10/12/2008 em 13:10
fonte usuário

votos
4

Você pode obter URLs como que o uso de regravação de URL. Por exemplo: para apache, ver mod_rewrite

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

Você realmente não precisa ser criar os arquivos. Você pode criar os arquivos, mas é mais complicado, pois você precisa decidir quando para atualizá-los se as alterações de dados.

Respondeu 10/12/2008 em 13:18
fonte usuário

votos
2

caching Manual (criando o HTML e salvá-lo para um arquivo) pode não ser a forma mais eficiente, mas se você quiser ir por esse caminho eu recomendo o seguinte (copiada de um aplicativo de teste simples que eu escrevi para fazer isso):

$cache_filename = basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'];
$cache_limit_in_mins = 60 * 32; // this forms 32hrs
// check if we have a cached file already
if ( file_exists($cache_filename) )
{
    $secs_in_min = 60;
    $diff_in_secs = (time() - ($secs_in_min * $cache_limit_in_mins)) - filemtime($cache_filename);
    // check if the cached file is older than our limit
    if ( $diff_in_secs < 0 )
    {
        // it isn't, so display it to the user and stop
        print file_get_contents($cache_filename);
        exit();
    }
}

// create an array to hold your HTML output, this is where you generate your HTML
$output = array();
$output[] = '<table>';
$output[] = '<tr>';
// etc

//  Save the output as manual cache
$file = fopen ( $cache_filename, 'w' );
fwrite ( $file, implode($output_final,'') );
fclose ( $file );

print implode($output_final,'');
Respondeu 10/12/2008 em 17:53
fonte usuário

votos
0

Se você não está em oposição às estruturas, tente usar do Zend Frameworks Zend_Cache . É muito flexível, e (ao contrário de alguns dos módulos quadro) fácil de implementar.

Respondeu 10/12/2008 em 22:12
fonte usuário

Respondeu 19/05/2010 em 16:47
fonte usuário

votos
0

Eu estava pensando do ponto de carga no banco de dados, e encargos de largura de banda de dados e velocidade de carregamento. Eu tenho algumas páginas que não são susceptíveis de mudar em anos, (eu sei que é fácil de usar um sistema CMS baseado em um banco de dados). Ao contrário nos EUA, aqui o custo de largura de banda pode ser elevado. Alguém tem alguma opinião sobre isso, se deseja criar páginas htmal ou dinâmico (php, asp.net) Links para as páginas seriam armazenados em um banco de dados de qualquer maneira.

Respondeu 02/07/2014 em 05:37
fonte usuário

votos
0

Na minha opinião esta é a melhor solução. Eu uso isso para arquivo JSON cache para o meu App Android. Pode ser simplesmente usar em outros arquivos PHP. É otimizar o tamanho do arquivo a partir de ~ 1MB para ~ 163kb (gzip) .

digite descrição da imagem aqui

Criar cachepasta em seu diretório

Em seguida, Criar cache_start.phparquivo e cole este código

<?php
header("HTTP/1.1 200 OK");
//header("Content-Type: application/json"); 
header("Content-Encoding: gzip");

$cache_filename = basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'];
$cache_filename = "./cache/".md5($cache_filename);
$cache_limit_in_mins = 60 * 60; // It's one hour


if (file_exists($cache_filename))
{
    $secs_in_min = 60;
    $diff_in_secs = (time() - ($secs_in_min * $cache_limit_in_mins)) - filemtime($cache_filename);
    if ( $diff_in_secs < 0 )
    {
        print file_get_contents($cache_filename);
        exit();
    }
}
ob_start("ob_gzhandler");
?>

Criar cache_end.phpe cole este código

<?php
$content = ob_get_contents();
ob_end_clean();
$file = fopen ( $cache_filename, 'w' );
fwrite ( $file, $content );
fclose ( $file );
echo gzencode($content);
?>

Em seguida, crie, por exemplo index.php(arquivo que você deseja armazenar em cache)

<?php
include "cache_start.php";
echo "Hello Compress Cache World!";
include "cache_end.php";
?>
Respondeu 28/09/2015 em 08:04
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more