2009-05-10 7 views
1

Ich arbeite auf einer Website mit sehr hohem Trafficking, die ein Smarty-Templating-System verwendet.Smarty-Vorlagen, die während einer Website mit hohem Trafficking hochgeladen wurden, verursachen eine leere Seite.

Wenn ich eine neue Kopie einer Vorlage, die gerade verwendet wird, hochladen, wird die Seite leer (als ob sich nichts in der Vorlagendatei selbst befindet). Ich muss lighttpd herunterfahren, die Vorlage erneut hochladen und lighttpd wieder starten.

Gibt es Einstellungen in Smarty, die ich verwenden sollte, die ich nicht sein könnte?

Hier ist eine Liste von Variablen, die ich in Smarty habe die Einrichtung selbst:

smarty- $> use_sub_dirs = true;

$ smarty-> compile_check = true;

Antwort

1

Sie Ihre Vorlagen nicht direkt kopieren, kopieren Sie sie in einigen temporären Ordnern und nach dem Upload beendet haben eine mv (Dateioperation move)

1

Sie versuchen, die zwischengespeicherten Dateien zu löschen? Wenn die Datei nicht vollständig hochgeladen wurde und jemand sie anfordert, wird sie zwischengespeichert (zumindest denke ich das). Ich benutzte smarty und ich benutze auch lighttpd. (entschieden, um XSLT zu gehen)

Wenn die Seite mehr als 2 Mal pro Sekunde angefordert wird, werden Sie nie in der Lage sein, die Datei tatsächlich zu aktualisieren, es sei denn, Sie schalten den HTTP-Server aus. Oder löschen Sie die Smarty-Cache-Datei.

+0

Ich glaube nicht, dass die wirkliche Smarty Cache sind aber die kompilierten Vorlagen. –

0

Sie können das Zwischenspeichern vor dem Hochladen einer Datei aktivieren (wenn es bereits aktiviert ist, erhöhen Sie das Zeitlimit und stellen Sie sicher, dass die gesamte Vorlage zwischengespeichert wird). Aktivieren Sie den Cache und setzen Sie ihn auf ein Zeitlimit von einigen Minuten, damit Smarty neu hochgeladene Vorlagen nicht kompiliert. Besuchen Sie die Seite mit Ihrer Vorlage, um sicherzustellen, dass Smarty sie zwischengespeichert hat. Laden Sie dann die Vorlage hoch, bevor der Cache abläuft. Wenn der Upload abgeschlossen ist, können Sie die Zwischenspeicherung wieder deaktivieren (oder auf die ursprünglichen Werte zurücksetzen).

Sie können Ihrer Anwendung eine Konfigurationseinstellung hinzufügen, die diesen Caching-Mechanismus global ein-/ausschalten kann.