2011-08-25 20 views
33

C'è un modo per disattivare la funzione di memorizzazione nella cache in Symfony2? Ho cercato di trovare l'impostazione nei file config * e parameters.ini e ho cercato molto. Ok, ho trovato alcune soluzioni, ma niente per l'ultima versione (Symfony2).Symfony2 disabilita la cache?

PERCHÉ? Perché voglio testare nuovi modelli e funzioni senza cancellare l'app/cache * tutto il tempo.

+0

questo concetto di cacheing mi confonde ancora. non sono sicuro se è possibile. ci sono due cache in realtà - almeno - per boostrapping (ramoscello, config, rotte) e un'altra per i componenti usati. Non sono sicuro che, data l'architettura della distribuzione di SF2 STD, l'idea di disabilitare le cache abbia senso. : -/il codice dovrebbe essere considerevolmente cambiato, suppongo, perché dovresti tradurre i file yml-configs, yml-routings e template su php ... forse è più facile diventare indipendente dalla cache se si usa php per le rotte, modelli e configurazioni in primo luogo. – Raffael

+1

Quale tipo/livello di cache si desidera disabilitare?Per la cache HTTP, la migliore panoramica è probabilmente [qui] (http://symfony.com/doc/current/book/http_cache.html) - nota comunque che non è attivata per impostazione predefinita. Puoi forse spiegare un po 'più in dettaglio che problema stai cercando di risolvere? –

+1

Voglio testare i modelli e la configurazione senza cancellare/app/cache/* per tutto il tempo. – NaN

risposta

66

Suppongo che tu stia utilizzando il motore Twig (il motore di templating predefinito per Symfony2). Per disattivare la memorizzazione nella cache in ramoscello, in modo che non c'è bisogno di tenere cancellare la cache in questo modo:

rm -rf app/cache/* 

passare al file di configurazione app (per defualt avrà sede a ../app/config/config. yml dalla directory principale). Scorrere fino alle impostazioni di configurazione ramoscello (sotto ramoscello:) e cambiare il valore della cache (che dovrebbe essere rivolta alla directory cache) per falso in questo modo:

twig: 
    cache: false 

Se non si vede alcun nascondiglio voce di configurazione, è sufficiente aggiungere la riga sopra.

Può anche essere utile alla cassa il riferimento Configurazione per il bundle Twig: http://symfony.com/doc/2.0/reference/configuration/twig.html

Dopo aver modificato il file config_dev.yml, vai al tuo terminale ed eseguire:

app/console cache:clear 
+0

Ciao a tutti, ho provato la soluzione fornita e tutto quello che ottengo ora da ramoscello è una pagina vuota. non ho mai avuto l'opzione cache nel mio file yml. Qualcuno ha un'idea ..? – xeon

+2

Mi raccomando di disabilitare la cache ramoscello solo su 'app_dev.php'. Funziona bene e rimane lontano dalla configurazione di produzione. – PutzKipa

+1

Come si disabilita il twig cache in app_dev.php? Tutta la documentazione dice che app_dev.php disabilita di default la cache di twig, ma non vedo questo comportamento. – jhnlsn

8

Ok, per quanto riguarda il chiarimento, la soluzione consiste semplicemente nell'utilizzare l'ambiente di sviluppo attraverso il web-controller/app_dev.php. Quindi sf2 tiene traccia delle tue regolazioni e non devi cancellare la cache.

4

Modifica 'config_dev.yml' e 'config.yml' e poi mettere in entrambe

twig: 
    cache: false 
3

In aggiunta alla risposta accettata, propongo di modificare il tuo config_dev.yml in un modo in modo che esegua ancora il debug del tuo modello di ramoscello. Per fare ciò, aggiungere questo codice al file config_dev.yml:

twig: 
    cache: false 
    debug: true 

services: 
    twig.extension.debug: 
     class: Twig_Extension_Debug 
     tags: 
       - { name: 'twig.extension' } 

Dopo aver modificato il file config_dev.yml, vai al tuo terminale ed eseguire:

app/console cache:clear 

In questo modo, si ricaricherà le tue impostazioni config_dev.yml - fai girare il tuo progetto con la nuova configurazione.

Spero che questo aiuti.

Problemi correlati