2013-01-09 3 views
7

C'è un modo per disabilitare la cache di compilazione di Twig per un modello particolare?Disabilita cache di compilazione Twig per un modello particolare

Sto usando Twig per i miei modelli di email. Quando qualcuno aggiorna questi modelli, vengono scritti sul disco. Anche se in produzione, dovrei cancellare l'intera cache altrimenti gli aggiornamenti non vengono notati.

Ecco perché voglio disattivare il cache Twig per questi modelli particolari. Non mi interessa la potenza di elaborazione in più, in quanto svuotare la mia intera cache è un successo in termini di prestazioni più grande.

+0

Perché vuoi seguire questa strada? Se puoi darci più contesto sul perché ne avresti bisogno, potremmo essere in grado di offrire una soluzione alternativa. Se ciò che stai chiedendo è possibile (che potrebbe essere, ma non so come), perderai tempo nell'elaborazione quando ogni richiesta per quel modello di ramaglia deve analizzarla e caricarla. – Mike

+0

Non riesco a rispondere alla domanda originale, ma posso indicarti il ​​pacchetto che utilizzo per la gestione dei modelli di posta elettronica: https://github.com/getme/EmailTemplateBundle. Ciò dovrebbe aiutarti a risolvere il problema. – Mike

+0

Peccato che il caricatore di Doctrine non supporti l'ereditarietà. Sono ancora aperto per i miei suggerimenti di domande iniziali. – hvtilborg

risposta

2

Penso che la risposta potrebbe non essere nella disabilitazione della cache per un modello specifico, ma cancellare la cache per un modello dopo che è stato aggiornato. Non ho testato il codice qui sotto, ma sembra ragionevole. Giocare con un po '

Nella vostra azione/servizio che consente di risparmiare un modello (dopo che il modello è stato salvato):

$fileCache = $this->container->get('twig')->getCacheFilename('AcmeDemoBundle:Default:index.html.twig'); 

if (is_file($fileCache)) { 
    @unlink($fileCache); 
} 

Per ulteriori informazioni, verificare come sia ramoscello file di cache vengono consegnati/vendor /twig/twig/lib/Twig/Environment.php (\ Twig_Environment) - metodo loadTemplate().