Pergunta

Eu estou trabalhando na criação de caching para o meu site, mas estou tendo dificuldade de testes se o cache está funcionando corretamente ou não. Eu tenho o seguinte no meu controlador:

public function read($id, $slug = null)
{
  $this->cache = Cache::instance();
  $story = $this->cache->get("story".$id);

  if (!$story) {
    $story_model = new Story_Model;
    $story = $story_model->get_story($id);
    if (!$story) throw new Kohana_404_Exception();
    $this->cache->set("story".$id, $story);
  }

  $this->template->content = new View('story');
  $this->template->title = htmlspecialchars($story->title);
  $this->template->content->story = $story;
}

Isso funciona muito bem, eu posso até verificar se o cache está sendo encontrado, ea seleção se () não está sendo inserido após o cache está definido. Minha confusão é este, porque é quando eu editar o meu cache-arquivo as alterações não são refletidas na visão? Por exemplo, meu cache esta aparência:

O:8:"stdClass":11:{
  s:2:"id";s:3:"636";
  s:5:"title";s:45:"Some Article Title";
  s:4:"link";s:50:"http://www.somesite.com";
  s:8:"category";s:2:"12";
  s:4:"user";s:1:"5";
  s:4:"slug";s:45:"some-article-title";
  s:7:"pubdate";s:19:"2009-08-05 03:57:50";
  s:6:"sticky";s:1:"0";
  s:7:"summary";N;
  s:13:"categorytitle";s:13:"International";
  s:8:"username";s:7:"usernameHere";
}

Se eu mudasse o valor title para "Alguns Título do artigo Parte 2", e atualizar meu ponto de vista, ainda vejo o nome do título de idade, e as alterações que fiz ao desaparecer arquivo cache.

Am I fazendo errado? Como posso testar se os meus arquivos de cache estão sendo acessados ??em vez do meu banco de dados? Meus conteúdo do arquivo de configuração a seguir:

$config['default'] = array
(
  'driver'   => 'file',
  'params'   => APPPATH.'cache',
  'lifetime' => 1800,
  'requests' => 1000
);
Foi útil?

Solução

Os serializado PHP objeto lugares restrições sobre os valores. Olhe para a seguinte linha:

s:5:"title";s:45:"Some Article Title";

O s:5 significa o seguinte valor terá cinco personagens "T-i-t-l-e". total de cinco. O próximo s:45 valor deve ter quarenta e cinco caracteres. Você mudou o texto do que quer que fosse para "Some Article Title" para postar aqui, mas o original tinha 45 caracteres nele total.

Adicionando mais caracteres, ou subtraindo chars vai quebrar a relação entre o comprimento da corda do valor, eo int-val vinculados a ela. Se s:3, sua seqüência deve ser três caracteres de comprimento.

Em vez de adicionar / subtrair de / para o valor, basta alterar algumas personagens. Mudança "Title" para "Ninja" e atualize sua página.

Outras dicas

Você vai querer editar os seus dados no armazenamento de dados original e caching tratar como uma caixa preta.

Se você está usando um banco de dados, obter um gerenciador de banco de bom que você possa facilmente editar valores. Eu uso DbVisualizer ... não me pergunte o porquê.

Quando utilizar o controlador de cache de arquivo, vou apagar tudo sob aplicativo / cache, a fim de limpar o cache e testar o código de cache.

A única vez que eu iria editar arquivos de cache, era se eu estava realmente escrevendo um sistema de cache para substituir o arquivo ou motoristas memcached.

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