![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
leftover when bar closes
Registriert seit: 29.06.2006
Ort: Bern
Beiträge: 123
|
Guten Abend allerseits
Ist es mit Smarty möglich, dynamisch generierte Seiten zu cachen? Mit dynamisch meine ich folgendes: index.php erstellt in unserem webshop den ganzen Shop an sich, die Navigation und die Produktedetails. Da sich die Produkteinfos nur sehr sporadisch ändern, möchte ich diese cachen. Wenn ich nun aber caching aktiviere, kommt logischerweise IMMER dasselbe Produkt, weil die ganze Seite ja gecached ist. Nun wäre es sehr praktisch, wenn ich der Cachingfunktion eine einzigartige Produkte-ID mitliefern könnte um verschiedene Versionen der selben page zu cachen. Möglich? Grüsse
__________________
Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner. ticketbörse |
|
|
|
|
|
Nach oben #3 |
|
leftover when bar closes
Registriert seit: 29.06.2006
Ort: Bern
Beiträge: 123
|
Hmm, da müsste ich was echt verbockt haben, bei mir hat das nicht geklappt.
Hmm, wobei, es liegt wohl daran, dass ich mit mod_rewrite und $_REQUEST_URL die angefragten Seiten aufsplitte und so alles in einem index.php verarbeite, somit wäre die URL ja ständig gleich, ohne angehängte $_GET's. Das wirds wohl sein... Ich werd' mich mal auf die Suche machen und schauen, ob man smarty eine unique ID mitgeben kann fürs cachen Danke dir
__________________
Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner. ticketbörse |
|
|
|
|
|
Nach oben #4 |
|
Erfahrener Benutzer
Registriert seit: 19.08.2005
Beiträge: 115
|
Afaik ist das bei Smarty mit dem Cachen so:
Wenn Smarty eine .tpl datei parsen soll, wandelt er sie zuerst in einen php Code um, der dann die ganzen Variablen zur Verfügung gestellt bekommt, die man im Script assigned. Beim Cachen wird lediglich der erzeugte phpcode gespeichert. Falls sich eine tpl datei ändert, erkennt Smarty das und parst die tpl datei erneut zu einer .php datei.
__________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning. Geändert von Buhmann (03.08.2006 um 22:43 Uhr). |
|
|
|
|
|
Nach oben #5 |
|
Benutzer
Registriert seit: 28.12.2005
Beiträge: 35
|
Ich glaub ihr vermischt hier zwei verschiedene paar Stiefel bei smarty:
- Template-Compile (templates_c) - Cache Bei ersterem wird php-code mit template-code "verschmolzen". Beim cachen wird in der Tat der fertige output gecached. Hier gibt es dann aber auch kenie dynamischen Möglichkeiten mehr soweit ich weiß. Mehr Auskunft hierüber gibt aber sicherlich die Doku: http://smarty.php.net/manual/de/caching.php ersters (compile) kannst übrigens nicht abschalten oder umgehen - das ist die Basis und einer der großen Vorteile von smarty (compiling template engine). btw: Keine Garantie auf Richtigkeit - ich bin kein Smarty-Experte |
|
|
|
|
|
Nach oben #6 |
|
Benutzer
Registriert seit: 31.12.2005
Beiträge: 90
|
es gibt mehrere "stufen". also zuerst werden die templates in php dateien umgeschrieben. das nennt man compilieren, und die templates werden in templates_c gespeichert, falls nicht selbst geändert.
falls du $smarty->check_compile auf true hast, wird immer geprüft, ob änderungen am template vorgenommen werden und neue compilierte templates erstellt, ansonsten nicht. defaultwert is glaub true. falls du $smarty->force_compile auf true hast, dann wird immer neu compiliert (eventuell bei der entwicklung gut). defaultwert is glaub false. nun hast du die compilierten templates. d.h. es ist einem normalen php vorgang ähnlich. wenn du nun $smarty->caching auf 1 (d.h. alle templates haben die selbe $smarty->cache_lifetime) oder auf 2 (d.h. jedes template kann eine extra lifetime haben) hast, dann wird der output gecached. d.h. das compilierte template mit den richtigen daten gefüllt wird gecached. dem cache kannst du eine cache_id übergeben. diese solltest du einfach aus den variablen zusammenstellen, die für die darstellung wichtig sind. den cache kannst du per clear_cache() löschen (löscht den cache einer bestimmten templatedatei) oder clear_all_cache() (löscht den ganzen cache). du kannst auch trotz des caches weiterhin teile dynamisch lassen. dies geht entweder über einen selbst definierten block, oder über die funktion {insert}! damit rufst du eine php funktion auf,d eren rückgabe dort eingefügt wird, natürlich dynamisch. an die funktion kannst du wie immer auch parameter übergeben: {insert name="funktionsname" param="value" param2="value2"} ich hoffe, ich habe ein wenig klarheit geschaffen! |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Eine Anmeldung -> Auf zwei Seiten Session starten und Cookie setzten | Jan | PHP-Programmierung | 12 | 27.09.2006 20:00 |
| Verständnissfrage zu Smarty | la-finest | PEAR, PECL und Frameworks | 7 | 26.09.2006 19:25 |
| Opera cached dynamische Seite | dsxs | HTML, XML und CSS | 11 | 29.08.2006 10:47 |
| [Rezension] Professionelle PHP 5-Programmierung, | Ben | Literatur | 11 | 27.07.2006 20:48 |
| Navigation auf Smarty umstellen?! | napsio | PEAR, PECL und Frameworks | 4 | 25.01.2006 19:22 |