Frage

Ich arbeite an Caching für meine Website einrichten, aber Schwierigkeiten habe zu testen, ob das Caching richtig oder nicht funktioniert. Ich habe folgende in meinem Controller bekomme:

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

Das funktioniert ganz gut, kann ich auch überprüfen, ob der Cache gefunden wird, und die if () Prüfung nicht eingegeben wird, nachdem der Cache eingestellt ist. Meine Verwirrung ist dies, warum ist es, wenn ich meine Cache-Datei der Änderungen bearbeiten sind nicht in der Ansicht wider? Zum Beispiel mein Cache sieht wie folgt aus:

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

Wenn ich den title Wert auf „Einige Artikel Titel Teil 2,“ und meine Ansicht aktualisieren, ich sehe immer noch den alten Titelnamen und die Änderungen, die ich in die Cache-Datei gemacht verschwinden.

Bin ich es falsch? Wie kann ich prüfen, ob meine Cache-Dateien statt meiner Datenbank zugegriffen werden? Meine Konfigurationsdatei Inhalt wie folgt vor:

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

Lösung

Die serialisierten PHP-Objekt legt Einschränkungen für die Werte. Schauen Sie sich die folgende Zeile ein:

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

Die s:5 bedeutet, dass der folgende Wert fünf Zeichen "T-i-t-l-e" haben. Fünf insgesamt. Der nächste Wert s:45 sollte fünfundvierzig Zeichen lang sein. Sie änderten den Text aus, was auch immer es für die Buchung hier "Some Article Title" war, aber das Original hatte 45 Zeichen in ihm insgesamt.

mehr Zeichen Hinzufügen oder Zeichen Subtraktion wird die Beziehung zwischen der Stringlänge des Wertes zu brechen, und die int-val gebunden zu. Wenn s:3, sollte die Zeichenfolge drei Zeichen lang sein.

Anstatt das Hinzufügen / Subtrahieren zu / von dem Wert, nur ein paar Zeichen ändern. Ändern "Title" "Ninja" und aktualisieren Sie Ihre Seite.

Andere Tipps

Sie wollen Ihre Daten in dem ursprünglichen Datenspeicher bearbeiten und Caching wie eine Blackbox zu behandeln.

Wenn Sie eine Datenbank verwenden, erhält einen guten Datenbank-Manager, so dass Sie leicht Werte bearbeiten können. Ich benutze DbVisualizer ... fragen Sie mich nicht, warum.

Wenn Sie den Datei-Cache-Treiber verwenden, werde ich alles unter application / Cache löschen, um den Cache zu löschen und den Cache-Code zu testen.

Das einzige Mal, dass ich Cache-Dateien bearbeiten würde, war, ob ich tatsächlich ein Caching-System Schreiben der Datei oder Memcached-Treiber zu ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top