質問

私は自分のサイトのキャッシュを設定するに取り組んでいますが、キャッシュが正しくないか、機能しているかどうかをテストする難しさを持っています。私は私のコントローラで次のように持ってます:

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;
}

これはうまく動作しますが、私もキャッシュが発見され、キャッシュが設定された後であれば()チェックが入力されていないことを確認することができます。私の混乱は、私は変更がビューに反映されていない、私のキャッシュファイルを編集するとき、なぜそれが、このですか?例えば、私のキャッシュは次のようになります:

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";
}

私は「いくつかの記事のタイトルPart 2」title値への変更、私のビューを更新すると、私はまだ古いタイトル名を見て、私はキャッシュファイルに加えた変更が消えます。

私はそれが間違っているのだろうか?どのように私は自分のキャッシュファイルは、私のデータベースの代わりにアクセスされているかどうかをテストすることができますか?私の設定ファイルの内容は、次のとおりです。

$config['default'] = array
(
  'driver'   => 'file',
  'params'   => APPPATH.'cache',
  'lifetime' => 1800,
  'requests' => 1000
);
役に立ちましたか?

解決

シリアライズされたPHPオブジェクトは、値の制約を課します。次の行を見ます:

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

s:5は、以下の値が5文字の"T-i-t-l-e"を持っていることを意味します。ファイブ合計。次の値のs:45は四〇から五文字を持つ必要があります。あなたはそれがここに投稿するため"Some Article Title"ことだった何からテキストを変更しましたが、元は合計で45個の文字を持っています。

以上の文字を追加するか、または文字を減算する値の文字列長との間の関係を打破しようと、及びINT-valがそれに接続されています。 s:3場合は、あなたの文字列が3文字の長である必要があります。

むしろ追加/値から、ちょうどカップルの文字を変更するには、/減算より。 "Title"してからページを更新する"Ninja"を変更します。

他のヒント

あなたは、元のデータストアにデータを編集し、ブラックボックスのようなキャッシュを治療することをお勧めします。

あなたは簡単に値を編集できるように

データベースを使用している場合、優れたデータベース・マネージャーを取得します。私は DbVisualizerのに使用...なぜ私に聞かないでください。

ファイルキャッシュドライバを使用する場合は、

、私はキャッシュをクリアし、キャッシュコードをテストするために、アプリケーション/キャッシュの下にすべて削除されます。

私は実際にファイルやmemcachedのドライバを置き換えるためにキャッシュシステムを書いていた場合、私はだった、キャッシュファイルを編集します唯一の時間ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top