Kohana, Düzenleme Cache View Reflect değil mi?

2 Cevap php

Benim site için önbelleğe alma ayarlama çalışıyorum, ama zorluk önbelleğe alma düzgün ya da çalışıp çalışmadığını test yaşıyorum. Ben benim denetleyicisi şu var:

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

Bu sadece iyi çalışır, ben bile önbelleği bulunan ediliyor doğrulayabilir, ve önbellek ayarlandıktan sonra if () onay girilen değildir. Benim karışıklık bu, ben değişikliklerin görünümünde yansıtılmamış benim önbellek dosyasını düzenlemek zaman neden nedir? Örneğin, benim önbellek bu gibi görünüyor:

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

Ben "Bazı Makale Başlığı Part 2," ve benim görünümü yenilemek için title değeri değişti, ben hala eski Başlık adını görmek ve ben önbellek dosyasına yapılan değişiklikler kaybolur.

Ben bunu yanlış yapıyorum? Nasıl benim önbellek dosyaları benim veritabanında yerine erişilen olup olmadığını test edebilirsiniz? Benim yapılandırma dosyası içeriğini izleyin:

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

2 Cevap

Tefrika PHP nesne değerleri üzerinde sınırlama yerleştirir. Aşağıdaki satırı bakalım:

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

s:5 aşağıdaki değer beş karakterleri "T-i-t-l-e" var anlamına gelir. Beş toplam. Sonraki değeri s:45 kırk beş karakter olmalıdır. Burada gönderme için için "Some Article Title" oldu ne olursa olsun metin değişti, ama orijinal toplam bu 45 karakter vardı.

Daha fazla karakter ekleme ya da karakter çıkarılarak değerinin dize uzunluğu arasındaki ilişkiyi kırmak için gidiyoruz, ve int-val buna bağlıdır. s:3, sizin dize uzun üç karakter olmalı eğer.

Aksine değeri için / çıkartarak / ekleyerek daha, sadece bir çift karakterleri değiştirin. Değişim "Title" "Ninja" ve sonra sayfanızı yenileyin.

Sen bir kara kutu gibi orijinal veri deposuna ve tedavi önbelleğe alma verileri düzenlemek isteyeceksiniz.

Eğer bir veritabanı kullanıyorsanız kolayca değerleri düzenleyebilirsiniz, böylece iyi bir veritabanı yöneticisi olsun. Ben kullanmak DBVisualizer ... neden bana sormayın.

Dosya önbelleği sürücü kullanırken, ben önbelleğini temizleyin ve önbelleğe alma kodu test etmek amacıyla uygulama / cache altında her şeyi silecektir.

Aslında dosya veya memcached sürücüleri değiştirmek için bir önbellek sistemi yazarken eğer ben önbellek dosyalarını düzenlemek istiyorum sadece zaman oldu.