Bevor ein Film aus dem Cache genutzt wird, sollte erst einmal überprüft werden, ob der Film in der Datenbank nicht verändert wurde. Das lässt sich anhand des Datetimes feststellen. Dieses muss bei dem Cacheeintrag identisch wie das in der Datenbank sein. Sollte es sich verändert haben so muss der Film neu aus der Datanbank geladen werden und der Cacheeintrag ignoriert werden.
Kommentare
Vor dem zurückliefern eines
Vor dem zurückliefern eines Filmes aus dem Cache wird expliziet noch mal das Veränderungsdatum überprüft. Hat sich das geändert so wird der Eintrag doch nicht mehr zurückgeliefert.
Gleichzeit wird die Liste in regelmäßigen Abständen (10 Sekunden) aktualisiert. Keine Ahnung ob das Gut oder Schlecht ist. Damit rauschen aber Veränderungen an der Datenbank automatisch rein. Selbst, wenn der Benutzer gar nichts am Programm macht. Allerdings sorgt das dann auch bei jedem Aktualisieren für 2% CPU-Last. Da weiß ich noch nicht, ob ich das wirklich will.
Statusänderung
Die Aufgabe wurde aufgrund von Inaktivität automatisch geschlossen.
Ist vielleicht ein bisschen
Ist vielleicht ein bisschen zu Kurz gedacht. Denn beim Einblenden von frisch geladenen Filmen etc. wird bei jedem Frame der Animation der Film aus dem Cache geholt und mit jedem Auslesen wird eine Query abgesetzt. Ist jetzt nicht so extrem. Allerdings möchte ich das nicht. Denn dabei hängt das Abfragen der Datenbank wieder direkt in jedem Zeichenvorgang drin. Nicht so schön.
Einfach wäre es, wenn die Einträge im Cache nach der Überprüfung pauschal für 5-10 Sekunden als gültig betrachtet werden. Gerade um auch so Sachen wie das Einblenden unterdrücken zu können.
Ideal wäre es wohl eher, wenn neben der Gültigkeit noch eine Asynchrones überprüfen der Cacheeinträge stattfinden würde. Also, wenn ein Film im Cache gefunden wurde, dessen Gültigkeit neu überprüft werden müsste, dann sollte das Ganze per Threads überprüft werden. Wenn sich der Film verändert hat, dann wird der neue Eintrag in den Cache übertragen und ein Refresh der Liste ausgelöst. Hat sich der Film nicht verändert so muss aber dennoch die Gültigkeit hochgesetzt werden.
Das pauschale Neuzeichnen der
Das pauschale Neuzeichnen der Liste zum Aktualisieren ist allerdings auch nicht so glücklich. Hier wäre es wohl besser, wenn die sichtbaren Einträge der ListView erfragt werden könnten und nur diese überprüft würden. Erst, wenn diese nicht mehr gültig wären müssten die Filme neu geladen und anschließend die Liste gezeichnet werden. Alternativ könnte man aber auch den Cache ungültig machen und dann neu zeichnen. Dann hätte man eine Animation.
Seperate Aufgabe für später
Seperate Aufgabe für später
Wie schaut das eigentlich mit
Wie schaut das eigentlich mit der Detailansicht aus? Wenn sich der Film in der aktuellen Detailansicht verändert müssten die Details ja eigentlich auch neu aufgebaut werden.
Film im Cache werden jetzt
Film im Cache werden jetzt frühestens erst nach 15 Sekunden wieder auf veränderungen überprüft.
(Kein Betreff)