SVG caching

Begonnen von erwin, 13 März 2013, 10:50:35

Vorheriges Thema - Nächstes Thema

erwin

Hi Rudolf,
vor einiger Zeit gabs ja schon ein oder 2 threads dazu....

ich hab diese mod jetzt etwa 2 Wochen im Einsatz, es funktioniert sowohl für FilePlot als auch für DbPlot.
Die Geschwindigkeit mit der gecachte Plots aufgebaut werden ist beeindruckend (.. je länger die Zeiträume sind desto mehr), und nur mehr von der Perfomance des Browsers abhängig.

Was sicher noch zu bedenken wäre:
1) das caching directory vom backup excluden.
2) das caching directory wählbar machen ??? - dazu hab ich keine Meinung oder Emotionen...
3) Cache clear command ?? - dazu hab ich keine Meinung oder Emotionen...

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

Hallo Erwin,

netter Patch, ich vermute es geht Dir um eine Aufnahme in die Standardversion.

Dazu faellt mir auf:
- das Verzeichnis svgcache wird nicht automatisch angelegt
- das Feature ist nicht optional (Attribut svgcache + doku fehlt)
- die Endzeit kann man einfacher pruefen (TimeNow() mit $t vergleichen)

Ich habe zu diesem Patch auch "keine Meinung oder Emotionen" :), da mein FHEM-Rechner schnell genug ist, wenn ich den Patch uebernehmen soll, dann sollten die (auch von dir) genannten Punkte vorher geloest werden.

Gruss,
  Rudi

justme1968

hallo erwin,

entschuldige das ich mich so lange nicht deswegen gemeldet habe. ich hatte inzwischen das logging auf sqlite und einen patch für indices umgestellt und das hat so viel geschwindigkeit gebracht das ich das cachen nicht mehr ganz fertig gemacht habe.

ich habe hier noch ein paar ergänzungen halb fertig die das ganze global und pro plot konfigurierbar machen. wenn du noch interesse und noch diese woche geduld hast dann schicke ich es dir zum einbauen. die idee ist per regex zu konfigurieren für welche zoom stufe das svg überhaupt gecached wird. bei < einem halben tag ist das fast nie sinnvoll und müllt ganz schnell das cache verzeichniss zu. d.h. man kann pro plot sagen alles, nichts oder nur > stufe xxx.

in der version die wir urspünglich hatten gab es auch noch die optimierung das im zurueckgelieferten html direkt das svg aus dem cache verlinkt war. in der version jetzt wird auch wenn das svg im cache ist auf jeden fall das FW_showLog aufgerufen was ein zusätzlicher rekursiver aufruf ist. direkt das svg zurueckzuliefern war bei mir auf seiten mit mehreren plots noch mal deutlich schneller. hattest du einen grund es jetzt so zu machen?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

erwin

Hi Rudi,

Danke fürs Feedback,
bin ganz Deiner Meinung -
genau desswegen hab ich's ja gepostet.

- directory anlegen - wird erledigt.
- feature optional - ich wollte im jetzigen Stand möglichst wenig an anderen Stellen herumpfuschen.... würde bedeuten: ein neues Attribut "svgcache"
  Eine Frage dazu:

     svgcache 0/1           caching an/aus (inkl. anlegen/löschen der cache-files/directory )
     oder
     svgcache <dirname>     wählbares Verzeichnis (inkl. anlegen/löschen der cache-files/directory )

  Was ist deine Meinung?  Ich frage auch wegen dem backup-cmd...  
- Doku - wird erledigt.
- Endzeit - schau ich mir an.

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

erwin

Hi Andre,

hab gerade an der Antwort an Rudi geschrieben und deinen Post nicht rechtzeitig gelesen.

Zeit ist kein Problem auf eine Woche oder 2 kommts sicherlich nicht an.

Zitatn der version die wir urspünglich hatten gab es auch noch die optimierung
Aus zwei Gründen hab ich's soo gemacht:
1) einheitliche Programmlogik, leichter durchschaubar - beide Code-Teile in einem Block, damit auch bei zukünftigen Änderungen "dazwischen" relativ sicher - und die calling Parameter sind gleich....
2) Habs jetzt nicht mehr exakt parat, aber in dem ersten Vorschlag haben wir die from/to-time Berechnung extra aufgerufen, was schon der wesentliche Teil des jetzigen Code Aufwand war.

Ich hab auch die Logik insofern geändert, daß ich die Variable $FW_pos nicht mehr brauche, weil die (bei mir) etliche Verwirrung gestiftet hat, in Zusammenhang mit FIXEDRANGE Attribute.

Im jetzigen Stand wird alles gecached, was ein to-datum in der Vergangenheit hat - diese Logik ist simpel, da gibts sicher noch Spielraum für Tuning....

Bin da Emotionslos - wenn du willst, schick mir deine Code-Fragmente und ich versuchs einzubauen, oder du machst auf meiner Basis weiter - no Problem..

l.g. erwin

FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

rudolfkoenig

>  Was ist deine Meinung?

Ich wuerde es bei 0/1 lassen (1 ist default), sonst sind zu viele unbekannten im Spiel. Wem svgcache nicht gefaellt, der soll ein symlink setzen.