RSS Feed
^__^

Silverstripe “auto” flush cache

Max Girkens, 2010/04/15 10:20

thereifixedit:
Wenn man bei einem Silverstripe Projekt häufige Änderungen an verschachtelten Templates hat,
kommt man, soweit ich weiss, nicht umhin

?flush=1
oder
?flush=all

an den Seitenaufruf anzuhängen um die Änderungen sichtbar zu machen.

Weil ich gerade sehr häufig in der Situation bin, also jede Minute, hatte ich gehofft man könnte den Cache irgendwo abschalten.
In der Richtung habe ich aber nichts gefunden.

Es lohnt aber ggf. lokal den Parameter einfach immer zu setzen.
Allzu langsam wird das ganze dadurch auch nicht.

also in der _config.php

if ( strpos( $_SERVER["REQUEST_URI"], 'admin' ) === false ) {
  $_GET["flush"] = 1;
}

:D

ziemliche Krücke, aber hilft erstmal weiter.

Gibt es einen eleganteren Weg, den ich auf die Schnelle nicht gefunden habe?
Oder liegt das nur an meinem Template Design dass ich das dauernd brauche? :)

4 Responses to “Silverstripe “auto” flush cache”

  1. Ivo Bathke says:

    evtl.:

    if(Director::isDev()) SSViewer::flush_template_cache();
    

    ist aber dann immer ‘all’.

    in 2.6. soll es wohl sowas geben:

    if (Director::isDev()) SS_Cache::set_cache_lifetime('any', -1, 100);
    

    aber bis dahin dann wenigstens so:

    if(Director::isDev())$_GET["flush"] = 1
    
  2. Josh says:

    Crude but works. I would do this, though, in _config.php:

    if (Director::isDev()) {
    SSViewer::flush_template_cache();
    }

    Cheers,

    Josh

  3. Josh says:

    ps sorry for the English – I don’t speak German!

  4. Max Girkens says:

    doesn’t

    Director::isDev()
    

    rather check for a Development Server?

    strpos( $_SERVER["REQUEST_URI"], 'admin' )
    

    was ment to check for frontend, to not flush the cache in backend. (as it really slows down things there)

    SSViewer::flush_template_cache()
    

    afaik this flushes the whole template cache for all pages.
    i used flush=1 to clear the cache for the current page, which is much faster.

    maybe something like this would be what i had in mind:

    if ( Director::isDev() && strpos( $_SERVER["REQUEST_URI"], 'admin' ) === false ) {
      $_GET["flush"] = 1;
    }
    

    sorry, my english isn’t that great :)
    I’m glad to see international readers here, thank you!

Leave a Reply