Pergunta

Eu gostaria de ir um pouco mais fundo no cache inteligente, então tenho algumas perguntas simples ...

  1. Para manipular a invalidação do cache, quero saber em que diretório Smarty está armazenando seu cache. Por exemplo, todas as páginas em cache relacionadas a user_id=123 Eu quero armazenar em cache/users/123/. Onde cache é o smarty cache dir. Como posso dizer a Smarty para armazenar o cache relacionado a user_id=123 no cache/users/123/? O Smarty Store Store também será o cache de sub-timplados neste diretório?

  2. Existem recomendações sobre a limpeza do cache neste diretório? Eu acho que simplesmente remover arquivos deste diretório pode causar alguns erros se alguns visitantes estiverem visitando essas páginas (o erro pode ocorrer quando Smarty verá que o cache do modelo é encontrado, mas o cache do subdélogo não foi encontrado porque já foi removido, por exemplo).

Quaisquer recomendações e conselhos são apreciados.

Obrigada.

Foi útil?

Solução

Dê uma olhada nos documentos Smarty: o "Grupos de cache"Seção. Faz exatamente isso.

Outras dicas

Você deve NÃO Limpar o cache manualmente. Use clear_cache () e clear_compiled_tpl () para isso. Você pode limpar todo o cache e também fazer uma limpeza seletiva com eles.

O uso pode mudar o cachedir Smarty, dependendo de onde você deseja (você pode verificar isso com algumas segundas se as Estaturas)

// Create smarty object
$smarty = new Smarty();

// Change smarty-dir is like this:
if (isset($_GET['userId'])) {
    $smarty->compile_dir = '/path/to/dir/' . $_GET['userId'];
} else {
    $smarty->compile_dir = '/path/to/dir/default';
}

O ponto dois é um pouco mais difícil, você precisa encontrar todos os mapes e atribuir o novo Dir compilador e, em seguida, executar o seguinte comando:

$smarty->clear_cache();

Mas, como você disse, é possível que o arquivo seja solicitado enquanto houver uma remoção. :-(


Mas não é recomendável usar diferentes pastas de cache, o Smarty não cache a saída, apenas o arquivo php compilado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top