Nasıl tamamen Cakephp önbelleğini devre dışı bırakmak mı?

4 Cevap php

Yani benim Cakephp app önbellek kapaklarını açtı ve şimdi ben bunları kapatmak istiyorum ...

Elimden hemen hemen her şeyi yaptık: tmp klasöründeki tüm dosyaları (değil klasörleri silme), benim app core.php dosyasında üzerinde 'Cache.disable' döndü, bazı denetleyicileri içinden önbelleğini temizlemeyi denedi clearcache () ve Cache :: clear () ile (- Vadesi önbelleğe ama ben denetleyicisi yükleme değil çünkü bu çalışmaz sanıyorum).

Önbelleğe alma kapatmak olmaz çünkü ben çok fazla etkili benim gelişim sürecini durdurdu ettik. Herkes deneyebilirsiniz bazı fikirleri var mı? Ben tarayıcısı ya da belki benim barındırma hizmeti içinde olabileceğini düşünmeye başlıyorum, ama bu muhtemelen sadece Cakephp benimle dalga var.

4 Cevap

Kök neden olarak tarayıcı önbelleğini ekarte etmek için, aşağıdaki satırları ekleyerek deneyebilirsiniz:

        header('Cache-Control: no-store, private, no-cache, must-revalidate');                  // HTTP/1.1
        header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);    // HTTP/1.1
        header('Pragma: public');
        header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                                       // Date in the past  
        header('Expires: 0', false); 
        header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
        header('Pragma: no-cache');

Tüm bu önbellek-avı HTTP başlıkları kombinasyonu, benim deneyim, tüm tarayıcılarda çalıştı, ve de bazı çok agresif önbelleğe vekiller etrafında var.

Modeli önbelleğe ve artık tablonun şema yansıyan alma ile keresinde bir sorun vardı.

I had to update my /config/core.php and set "debug:2" This disables the caching of my models and fixed my problems.

Uzun bir atış Kind (artı bu konu eski ama oh iyi), ama benzer bir sorun vardı: I (jQuery kullanarak) IE önbellek ajax istekleri çıkmak için alamadım. Çok gönül yarası sonra ve basit baş ağrısı:

$.ajaxSetup({cache:false});

hile yaptı. Gotta IE seviyorum ...

Bazı element önbelleğe alma için denetleyicisi kod bakmak ve yanlış onları ayarlayabilirsiniz. Bu app_controller.php için geçerlidir veya Controller / AppController.php kullanmak Cake sürümüne bağlı.

Controller::cacheAction = false

echo $this->element('latest_comments', array(), array('cache' => false));

Eğer denetleyici eylem Controller::disableCache(); eklemeyi deneyebilirsiniz.